Package shark¶
Types¶
Name | Summary |
---|---|
AnalyzeCommand | class AnalyzeCommand : CliktCommand |
AndroidBuildMirror | class AndroidBuildMirror(val manufacturer: String, val sdkInt: Int, val id: String) Caches values from the android.os.Build class in the heap dump. Retrieve a cached instances via fromHeapGraph. |
AndroidMetadataExtractor | object AndroidMetadataExtractor : MetadataExtractor |
AndroidObjectInspectors | enum AndroidObjectInspectors : Enum<AndroidObjectInspectors> , ObjectInspector A set of default ObjectInspectors that knows about common AOSP and library classes. |
AndroidReferenceMatchers | enum AndroidReferenceMatchers : Enum<AndroidReferenceMatchers> AndroidReferenceMatchers values add ReferenceMatcher instances to a global list via their add method. A ReferenceMatcher is either a IgnoredReferenceMatcher or a LibraryLeakReferenceMatcher. |
AndroidResourceIdNames | class AndroidResourceIdNames |
AndroidServices | object AndroidServices |
ApplicationLeak | data class ApplicationLeak(val leakTraces: List<LeakTrace>) : Leak A leak found by HeapAnalyzer in your application. |
AppSingletonInspector | class AppSingletonInspector(singletonClasses: String) : ObjectInspector Inspector that automatically marks instances of the provided class names as not leaking because they’re app wide singletons. |
ByteArraySourceProvider | class ByteArraySourceProvider(byteArray: ByteArray) : DualSourceProvider |
CloseableHeapGraph | interface CloseableHeapGraph : HeapGraph, Closeable A HeapGraph that should be closed after being used. |
ConstantMemoryMetricsDualSourceProvider | class ConstantMemoryMetricsDualSourceProvider(realSourceProvider: DualSourceProvider) : DualSourceProvider Captures IO read metrics without using much memory. |
DecoratedPath | class DecoratedPath(delegate: Path) : Path |
DeobfuscateHprofCommand | class DeobfuscateHprofCommand : CliktCommand |
DualSourceProvider | interface DualSourceProvider : StreamingSourceProvider, RandomAccessSourceProvider Both a StreamingSourceProvider and a RandomAccessSourceProvider |
DumpProcessCommand | class DumpProcessCommand : CliktCommand |
FileSourceProvider | class FileSourceProvider(file: File) : DualSourceProvider |
FilteringLeakingObjectFinder | class FilteringLeakingObjectFinder(filters: List<FilteringLeakingObjectFinder.LeakingObjectFilter>) : LeakingObjectFinder Finds the objects that are leaking by scanning all objects in the heap dump and delegating the decision to a list of FilteringLeakingObjectFinder.LeakingObjectFilter |
FindLeakPaths | class FindLeakPaths |
GcRoot | sealed class GcRoot A GcRoot as identified by HprofRecord.HeapDumpRecord.GcRootRecord in the heap dump. |
GraphContext | class GraphContext In memory store that can be used to store objects in a given HeapGraph instance. This is a simple MutableMap of String to Any, but with unsafe generics access. |
HeapAnalysis | sealed class HeapAnalysis : Serializable The result of an analysis performed by HeapAnalyzer, either a HeapAnalysisSuccess or a HeapAnalysisFailure. This class is serializable however there are no guarantees of forward compatibility. |
HeapAnalysisException | class HeapAnalysisException(cause: Throwable) : RuntimeException |
HeapAnalysisFailure | data class HeapAnalysisFailure(val heapDumpFile: File, val createdAtTimeMillis: Long, val dumpDurationMillis: Long = DUMP_DURATION_UNKNOWN, val analysisDurationMillis: Long, val exception: HeapAnalysisException) : HeapAnalysis The analysis performed by HeapAnalyzer did not complete successfully. |
HeapAnalysisSuccess | data class HeapAnalysisSuccess(val heapDumpFile: File, val createdAtTimeMillis: Long, val dumpDurationMillis: Long = DUMP_DURATION_UNKNOWN, val analysisDurationMillis: Long, val metadata: Map<String, String>, val applicationLeaks: List<ApplicationLeak>, val libraryLeaks: List<LibraryLeak>, val unreachableObjects: List<LeakTraceObject>) : HeapAnalysis The result of a successful heap analysis performed by HeapAnalyzer. |
HeapAnalyzer | class HeapAnalyzer(listener: OnAnalysisProgressListener) Analyzes heap dumps to look for leaks. |
HeapDumpRule | class HeapDumpRule : ExternalResource |
HeapField | class HeapField(val declaringClass: HeapObject.HeapClass, val name: String, val value: HeapValue) Represents a static field or an instance field. |
HeapGraph | interface HeapGraph Enables navigation through the heap graph of objects. |
HeapObject | sealed class HeapObject An object in the heap dump. |
HeapValue | class HeapValue(val graph: HeapGraph, val holder: ValueHolder) Represents a value in the heap dump, which can be an object reference or a primitive type. |
HprofDeobfuscator | class HprofDeobfuscator Converts a Hprof file to another file with deobfuscated class and field names. |
HprofHeader | data class HprofHeader(val heapDumpTimestamp: Long = System.currentTimeMillis(), val version: HprofVersion = HprofVersion.ANDROID, val identifierByteSize: Int = 4) Represents the header metadata of a Hprof file. |
HprofHeapGraph | class HprofHeapGraph : CloseableHeapGraph A HeapGraph that reads from an Hprof file indexed by HprofIndex. |
HprofIndex | class HprofIndex An index on a Hprof file. See openHeapGraph. |
HprofPrimitiveArrayStripper | class HprofPrimitiveArrayStripper Converts a Hprof file to another file with all primitive arrays replaced with arrays of zeroes, which can be useful to remove PII. Char arrays are handled slightly differently because 0 would be the null character so instead these become arrays of ‘?’. |
HprofRecord | sealed class HprofRecord A Hprof record. These data structure map 1:1 with how records are written in hprof files. |
HprofRecordReader | class HprofRecordReader Reads hprof content from an Okio BufferedSource. |
HprofRecordTag | enum HprofRecordTag : Enum<HprofRecordTag> |
HprofVersion | enum HprofVersion : Enum<HprofVersion> Supported hprof versions |
HprofWriter | class HprofWriter : Closeable Generates Hprof files. |
HprofWriterHelper | class HprofWriterHelper(writer: HprofWriter) : Closeable |
IgnoredReferenceMatcher | class IgnoredReferenceMatcher(val pattern: ReferencePattern) : ReferenceMatcher IgnoredReferenceMatcher should be used to match references that cannot ever create leaks. The shortest path finder will never go through matching references. |
InteractiveCommand | class InteractiveCommand : CliktCommand |
JvmTestHeapDumper | object JvmTestHeapDumper |
KeyedWeakReferenceFinder | object KeyedWeakReferenceFinder : LeakingObjectFinder Finds all objects tracked by a KeyedWeakReference, ie all objects that were passed to ObjectWatcher.watch. |
Leak | sealed class Leak : Serializable A leak found by HeapAnalyzer, either an ApplicationLeak or a LibraryLeak. |
LeakingObjectFinder | fun interface LeakingObjectFinder Finds the objects that are leaking, for which Shark will compute leak traces. |
LeakTrace | data class LeakTrace(val gcRootType: LeakTrace.GcRootType, val referencePath: List<LeakTraceReference>, val leakingObject: LeakTraceObject) : Serializable The best strong reference path from a GC root to the leaking object. "Best" here means the shortest prioritized path. A large number of distinct paths can generally be found leading to a leaking object. Shark prioritizes paths that don’t go through known LibraryLeakReferenceMatcher (because those are known to create leaks so it’s more interesting to find other paths causing leaks), then it prioritize paths that don’t go through java local gc roots (because those are harder to reason about). Taking those priorities into account, finding the shortest path means there are less LeakTraceReference that can be suspected to cause the leak. |
LeakTraceObject | data class LeakTraceObject(val type: LeakTraceObject.ObjectType, val className: String, val labels: Set<String>, val leakingStatus: LeakTraceObject.LeakingStatus, val leakingStatusReason: String, val retainedHeapByteSize: Int?, val retainedObjectCount: Int?) : Serializable |
LeakTraceReference | data class LeakTraceReference(val originObject: LeakTraceObject, val referenceType: LeakTraceReference.ReferenceType, val owningClassName: String, val referenceName: String) : Serializable A LeakTraceReference represents an origin LeakTraceObject and either a reference from that object to the LeakTraceObject in the next LeakTraceReference in LeakTrace.referencePath, or to LeakTrace.leakingObject if this is the last LeakTraceReference in LeakTrace.referencePath. |
LibraryLeak | data class LibraryLeak(val leakTraces: List<LeakTrace>, val pattern: ReferencePattern, val description: String) : Leak A leak found by HeapAnalyzer, where the only path to the leaking object required going through a reference matched by pattern, as provided to a LibraryLeakReferenceMatcher instance. This is a known leak in library code that is beyond your control. |
LibraryLeakReferenceMatcher | data class LibraryLeakReferenceMatcher(val pattern: ReferencePattern, val description: String = "", val patternApplies: (HeapGraph) -> Boolean = { true }) : ReferenceMatcher LibraryLeakReferenceMatcher should be used to match references in library code that are known to create leaks and are beyond your control. The shortest path finder will only go through matching references after it has exhausted references that don’t match, prioritizing finding an application leak over a known library leak. Library leaks will be reported as LibraryLeak instead of ApplicationLeak. |
MetadataExtractor | fun interface MetadataExtractor Extracts metadata from a hprof to be reported in HeapAnalysisSuccess.metadata. |
Neo4JCommand | class Neo4JCommand : CliktCommand Example commands: |
ObjectInspector | fun interface ObjectInspector Provides LeakCanary with insights about objects (classes, instances and arrays) found in the heap. inspect will be called for each object that LeakCanary wants to know more about. The implementation can then use the provided ObjectReporter to provide insights for that object. |
ObjectInspectors | enum ObjectInspectors : Enum<ObjectInspectors> , ObjectInspector A set of default ObjectInspectors that knows about common JDK objects. |
ObjectReporter | class ObjectReporter(val heapObject: HeapObject) Enables ObjectInspector implementations to provide insights on heapObject, which is an object (class, instance or array) found in the heap. |
OnAnalysisProgressListener | fun interface OnAnalysisProgressListener Reports progress from the HeapAnalyzer as they occur, as Step values. |
OnHprofRecordListener | fun interface OnHprofRecordListener Listener passed in to StreamingHprofReader.readRecords, gets notified for each HprofRecord found in the heap dump which types is in the set of the recordTypes parameter passed to StreamingHprofReader.readRecords. |
OnHprofRecordTagListener | fun interface OnHprofRecordTagListener Listener passed in to StreamingHprofReader.readRecords, gets notified for each HprofRecordTag found in the heap dump. |
PrimitiveType | enum PrimitiveType : Enum<PrimitiveType> A primitive type in the prof. |
ProguardMapping | class ProguardMapping |
ProguardMappingHelper | class ProguardMappingHelper(proguardMapping: ProguardMapping) |
ProguardMappingReader | class ProguardMappingReader(proguardMappingInputStream: InputStream) |
RandomAccessHprofReader | class RandomAccessHprofReader : Closeable Reads records in a Hprof source, one at a time with a specific position and size. Call openReaderFor to obtain a new instance. |
RandomAccessSource | interface RandomAccessSource : Closeable |
RandomAccessSourceProvider | fun interface RandomAccessSourceProvider Can open RandomAccessSource instances. |
ReferenceMatcher | sealed class ReferenceMatcher Used to pattern match known patterns of references in the heap, either to ignore them (IgnoredReferenceMatcher) or to mark them as library leaks (LibraryLeakReferenceMatcher). |
ReferencePattern | sealed class ReferencePattern : Serializable A pattern that will match references for a given ReferenceMatcher. |
SharkCliCommand | class SharkCliCommand : CliktCommand |
SharkLog | object SharkLog Central Logger for all Shark artifacts. Set logger to change where these logs go. |
StreamingHprofReader | class StreamingHprofReader Reads the entire content of a Hprof source in one fell swoop. Call readerFor to obtain a new instance. |
StreamingRecordReaderAdapter | class StreamingRecordReaderAdapter(streamingHprofReader: StreamingHprofReader) Wraps a StreamingHprofReader to provide a higher level API that streams HprofRecord instances. |
StreamingSourceProvider | fun interface StreamingSourceProvider Can open Source instances. |
StripHprofCommand | class StripHprofCommand : CliktCommand |
ThrowingCancelableFileSourceProvider | class ThrowingCancelableFileSourceProvider(file: File, throwIfCanceled: Runnable) : DualSourceProvider A DualSourceProvider that invokes throwIfCanceled before every read, allowing cancellation of IO based work built on top by throwing an exception. |
ValueHolder | sealed class ValueHolder A value in the heap dump, which can be a ReferenceHolder or a primitive type. |
Functions¶
Name | Summary |
---|---|
asHprofBytes | fun List<HprofRecord>.asHprofBytes(): DualSourceProvider |
create | fun ProguardMapping.create(block: ProguardMappingHelper.() -> Unit): ProguardMapping |
dump | fun File.dump(block: HprofWriterHelper.() -> Unit) fun dump(hprofHeader: HprofHeader = HprofHeader(), block: HprofWriterHelper.() -> Unit): DualSourceProvider |
dumpToBytes | fun dumpToBytes(hprofHeader: HprofHeader = HprofHeader(), block: HprofWriterHelper.() -> Unit): ByteArray |
main | fun main(args: Array<String>) |
Properties¶
Name | Summary |
---|---|
hexIdentityHashCode | val HeapObject.HeapInstance.hexIdentityHashCode: String? The system identity hashCode represented as hex, or null if it couldn’t be found. This is the string identifier you see when calling Object.toString() at runtime on a class that does not override its hashCode() method, e.g. com.example.MyThing@6bd57cf |
identityHashCode | val HeapObject.HeapInstance.identityHashCode: Int? The system identity hash code, or null if it couldn’t be found. |