StringSegment(HprofHeap heap, long start, long end) { super(HprofHeap.STRING, start, end); int idSize = heap.dumpBuffer.getIDSize(); hprofHeap = heap; timeOffset = 1; lengthOffset = timeOffset + 4; stringIDOffset = lengthOffset + 4; UTF8CharsOffset = stringIDOffset + idSize; }
LoadClassSegment(HprofHeap heap, long start, long end) { super(HprofHeap.LOAD_CLASS, start, end); int idSize = heap.dumpBuffer.getIDSize(); hprofHeap = heap; timeOffset = 1; lengthOffset = timeOffset + 4; classSerialNumberOffset = lengthOffset + 4; classIDOffset = classSerialNumberOffset + 4; stackTraceSerialOffset = classIDOffset + idSize; nameStringIDOffset = stackTraceSerialOffset + 4; }
AbstractObjectArrayLazyList(HprofHeap h, HprofByteBuffer buf, int len, long off) { heap = h; dumpBuffer = buf; length = len; offset = off; idSize = dumpBuffer.getIDSize(); }
StackFrameSegment(HprofHeap heap, long start, long end) { super(HprofHeap.STACK_TRACE, start, end); int idSize = heap.dumpBuffer.getIDSize(); hprofHeap = heap; timeOffset = 1; lengthOffset = timeOffset + 4; stackFrameIDOffset = lengthOffset + 4; methodIDOffset = stackFrameIDOffset + idSize; methodSignatureIDOffset = methodIDOffset + idSize; sourceIDOffset = methodSignatureIDOffset + idSize; classSerialNumberOffset = sourceIDOffset + idSize; lineNumberOffset = classSerialNumberOffset + 4; }
private static long[] collectIDs(HprofByteBuffer buf, int len, long off) { long[] array = new long[len]; long ptr = off; long idSize = buf.getIDSize(); for(int i = 0; i != len; ++i) { array[i] = buf.getID(ptr); ptr += idSize; } Arrays.sort(array); return array; } }
long getOffset() { int idSize = dumpClass.getHprofBuffer().getIDSize(); return fileOffset + 1 + idSize + 4 + 4 + idSize; } }
int getThreadSerialNumber() { return heap.dumpBuffer.getInt(fileOffset + 1 + heap.dumpBuffer.getIDSize()); }
private long getArrayStartOffset() { int idSize = dumpClass.getHprofBuffer().getIDSize(); return fileOffset + 1 + idSize + 4 + 4 + 1; }
private int getInstanceFieldValuesOffset() { int idSize = dumpClass.getHprofBuffer().getIDSize(); return 1 + idSize + 4 + idSize + 4; }
public int getFrameNumber() { return heap.dumpBuffer.getInt(fileOffset + 1 + heap.dumpBuffer.getIDSize() + 4); }
private int getThreadSerialNumber() { return heap.dumpBuffer.getInt(fileOffset + 1 + heap.dumpBuffer.getIDSize()); }
private int getStackTraceSerialNumber() { return heap.dumpBuffer.getInt(fileOffset + 1 + heap.dumpBuffer.getIDSize() + 4); }
byte getValueType() { HprofByteBuffer buffer = classDump.getHprofBuffer(); return buffer.get(fileOffset + buffer.getIDSize()); } }
private byte getType() { HprofByteBuffer dumpBuffer = dumpClass.getHprofBuffer(); int idSize = dumpBuffer.getIDSize(); return dumpBuffer.get(fileOffset + 1 + idSize + 4 + 4); } }
public int getLength() { HprofByteBuffer dumpBuffer = dumpClass.getHprofBuffer(); int idSize = dumpBuffer.getIDSize(); return dumpBuffer.getInt(fileOffset + 1 + idSize + 4); }
protected LongMap initIdMap() throws FileNotFoundException, IOException { return new LongMap(idMapSize,dumpBuffer.getIDSize(),dumpBuffer.getFoffsetSize()); }
public Instance getInstance() { HprofHeap heap = dumpClass.getHprof(); HprofByteBuffer dumpBuffer = heap.dumpBuffer; int idSize = dumpBuffer.getIDSize(); long instanceId = dumpBuffer.getID(instanceArrayOffset + 1 + idSize + 4 + 4 + idSize + ((long)index * (long)idSize)); return heap.getInstanceByID(instanceId); } }
public long getSize() { int idSize = dumpClass.getHprofBuffer().getIDSize(); return dumpClass.classDumpSegment.getMinimumInstanceSize() + HPROF_ARRAY_OVERHEAD + ((long)idSize * getLength()); }
StackFrame[] getStackFrames() { HprofByteBuffer buf = getHprofBuffer(); int frames = buf.getInt(fileOffset + stackTraceSegment.numberOfFramesOffset); StackFrame[] fr = new StackFrame[frames]; long idOffset = fileOffset + stackTraceSegment.framesListOffset; StackFrameSegment stackFrameSegment = stackTraceSegment.hprofHeap.getStackFrameSegment(); for (int i=0;i<frames;i++,idOffset+=buf.getIDSize()) { long frameID = buf.getID(idOffset); fr[i] = stackFrameSegment.getStackFrameByID(frameID); } return fr; }
int getStaticFiledSize(int staticFieldOffset) { int i; HprofByteBuffer buffer = getHprofBuffer(); int idSize = buffer.getIDSize(); long fieldOffset = fileOffset + staticFieldOffset; int fields = buffer.getShort(fieldOffset); HprofHeap heap = getHprof(); fieldOffset += 2; for (i = 0; i < fields; i++) { byte type = buffer.get(fieldOffset + idSize); int size = heap.getValueSize(type); fieldOffset += (idSize + 1 + size); } return (int) (fieldOffset - staticFieldOffset - fileOffset); }