Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
package shark
/**
* A Hprof record. These data structure map 1:1 with how records are written in hprof files.
*/
sealed class HprofRecord {
class StringRecord(
val id: Long,
val string: String
) : HprofRecord()
class LoadClassRecord(
val classSerialNumber: Int,
val id: Long,
val stackTraceSerialNumber: Int,
val classNameStringId: Long
) : HprofRecord()
class UnloadClassRecord(
val classSerialNumber: Int,
) : HprofRecord()
/**
* Terminates a series of heap dump segments. Concatenation of heap dump segments equals a
* heap dump.
*/
object HeapDumpEndRecord : HprofRecord()
class StackFrameRecord(
val id: Long,
val methodNameStringId: Long,
val methodSignatureStringId: Long,
val sourceFileNameStringId: Long,
val classSerialNumber: Int,
/**
* >0 line number
* 0 no line information available
* -1 unknown location
* -2 compiled method (Not implemented)
* -3 native method (Not implemented)
*/
val lineNumber: Int
) : HprofRecord()
class StackTraceRecord(
val stackTraceSerialNumber: Int,
val threadSerialNumber: Int,
val stackFrameIds: LongArray
) : HprofRecord()
sealed class HeapDumpRecord : HprofRecord() {
class GcRootRecord(
val gcRoot: GcRoot
) : HeapDumpRecord()
sealed class ObjectRecord : HeapDumpRecord() {
class ClassDumpRecord(
val id: Long,
val stackTraceSerialNumber: Int,
val superclassId: Long,
val classLoaderId: Long,
val signersId: Long,
val protectionDomainId: Long,
val instanceSize: Int,
val staticFields: List,
val fields: List
) : ObjectRecord() {
data class StaticFieldRecord(
val nameStringId: Long,
val type: Int,
val value: ValueHolder
)
data class FieldRecord(
val nameStringId: Long,
val type: Int
)
}
class InstanceDumpRecord(
val id: Long,
val stackTraceSerialNumber: Int,
val classId: Long,
/**
* Instance field values (this class, followed by super class, etc)
*/
val fieldValues: ByteArray
) : ObjectRecord()
class ObjectArrayDumpRecord(
val id: Long,
val stackTraceSerialNumber: Int,
val arrayClassId: Long,
val elementIds: LongArray
) : ObjectRecord()
sealed class PrimitiveArrayDumpRecord : ObjectRecord() {
abstract val id: Long
abstract val stackTraceSerialNumber: Int
abstract val size: Int
class BooleanArrayDump(
override val id: Long,
override val stackTraceSerialNumber: Int,
val array: BooleanArray
) : PrimitiveArrayDumpRecord() {
override val size: Int
get() = array.size
}
class CharArrayDump(
override val id: Long,
override val stackTraceSerialNumber: Int,
val array: CharArray
) : PrimitiveArrayDumpRecord() {
override val size: Int
get() = array.size
}
class FloatArrayDump(
override val id: Long,
override val stackTraceSerialNumber: Int,
val array: FloatArray
) : PrimitiveArrayDumpRecord() {
override val size: Int
get() = array.size
}
class DoubleArrayDump(
override val id: Long,
override val stackTraceSerialNumber: Int,
val array: DoubleArray
) : PrimitiveArrayDumpRecord() {
override val size: Int
get() = array.size
}
class ByteArrayDump(
override val id: Long,
override val stackTraceSerialNumber: Int,
val array: ByteArray
) : PrimitiveArrayDumpRecord() {
override val size: Int
get() = array.size
}
class ShortArrayDump(
override val id: Long,
override val stackTraceSerialNumber: Int,
val array: ShortArray
) : PrimitiveArrayDumpRecord() {
override val size: Int
get() = array.size
}
class IntArrayDump(
override val id: Long,
override val stackTraceSerialNumber: Int,
val array: IntArray
) : PrimitiveArrayDumpRecord() {
override val size: Int
get() = array.size
}
class LongArrayDump(
override val id: Long,
override val stackTraceSerialNumber: Int,
val array: LongArray
) : PrimitiveArrayDumpRecord() {
override val size: Int
get() = array.size
}
}
}
class HeapDumpInfoRecord(
val heapId: Int,
val heapNameStringId: Long
) : HeapDumpRecord()
}
}