int idSize = dumpBuffer.getIDSize(); long[] offset = new long[] { allInstanceDumpBounds.startOffset }; Map<Long, JavaClass> classIdToClassMap = classDumpBounds.getClassIdToClassMap(); byte type = dumpBuffer.get(start + 1 + idSize + 4 + 4); instanceIdOffset = 1; classDump = classDumpBounds.getPrimitiveArrayClass(type); classDump.registerInstance(start); instanceEntry.setIndex(classDump.getInstancesCount()); classDumpBounds.addInstanceSize(classDump, tag, start);
Collection<JavaClass> getJavaClassesByRegExp(String regexp) { Iterator<JavaClass> classIt = createClassCollection().iterator(); Collection<JavaClass> result = new ArrayList<JavaClass>(256); Pattern pattern = Pattern.compile(regexp); while (classIt.hasNext()) { ClassDump cls = (ClassDump) classIt.next(); if (pattern.matcher(cls.getName()).matches()) { result.add(cls); } } return result; }
synchronized List<JavaClass> createClassCollection() { if (classes != null) { return classes; } classes = new ArrayList<JavaClass>(1000); long[] offset = new long[] { startOffset }; while (offset[0] < endOffset) { long start = offset[0]; int tag = hprofHeap.readDumpTag(offset); if (tag == HprofHeap.CLASS_DUMP) { ClassDump classDump = new ClassDump(this, start); long classId = classDump.getJavaClassId(); classes.add(classDump); hprofHeap.addClassEntry(classId, start, classes.size()); } } hprofHeap.getLoadClassSegment().setLoadClassOffsets(); arrayMap = new HashMap<JavaClass, Long>(classes.size() / 15); extractSpecialClasses(); return classes; }
int idSize = dumpBuffer.getIDSize(); long[] offset = new long[] { allInstanceDumpBounds.startOffset }; Map<Long, JavaClass> classIdToClassMap = classDumpBounds.getClassIdToClassMap(); Iterator<JavaClass> classesIt = getClassDumpSegment().createClassCollection().iterator();
classDump = classDumpBounds.getPrimitiveArrayClass(dumpBuffer.get(start + 1 + classIdOffset)); classDump = classDumpBounds.getClassDumpByID(classId);
void addInstanceSize(ClassDump cls, int tag, long instanceOffset) { if ((tag == HprofHeap.OBJECT_ARRAY_DUMP) || (tag == HprofHeap.PRIMITIVE_ARRAY_DUMP)) { Long sizeLong = (Long) arrayMap.get(cls); long size = 0; HprofByteBuffer dumpBuffer = hprofHeap.dumpBuffer; int idSize = dumpBuffer.getIDSize(); long elementsOffset = instanceOffset + 1 + idSize + 4; if (sizeLong != null) { size = sizeLong.longValue(); } int elements = dumpBuffer.getInt(elementsOffset); int elSize; if (tag == HprofHeap.PRIMITIVE_ARRAY_DUMP) { elSize = hprofHeap.getValueSize(dumpBuffer.get(elementsOffset + 4)); } else { elSize = idSize; } size += (getMinimumInstanceSize() + ArrayDump.HPROF_ARRAY_OVERHEAD + (((long)elements) * elSize)); arrayMap.put((JavaClass)cls, Long.valueOf(size)); } }
public JavaClass getJavaClassByID(long javaclassId) { return getClassDumpSegment().getClassDumpByID(javaclassId); }
public JavaClass getJavaClassByName(String fqn) { if (heapDumpSegment == null) { return null; } return getClassDumpSegment().getJavaClassByName(fqn); }
public Collection<JavaClass> getJavaClassesByRegExp(String regexp) { if (heapDumpSegment == null) { return Collections.emptyList(); } return getClassDumpSegment().getJavaClassesByRegExp(regexp); }
newBounds = new ClassDumpSegment(this, start, end); } else { newBounds = new TagBounds(tag, start, end);
} else if (tag == HprofHeap.PRIMITIVE_ARRAY_DUMP) { byte type = dumpBuffer.get(start + 1 + idSize + 4 + 4); instanceClassId = heap.getClassDumpSegment().getPrimitiveArrayClass(type).getJavaClassId();
classDump = classDumpBounds.getPrimitiveArrayClass(dumpBuffer.get(start + 1 + classIdOffset)); classDump = classDumpBounds.getClassDumpByID(classId);
public int getInstanceSize() { if (isArray()) { return -1; } return classDumpSegment.getMinimumInstanceSize() + getHprofBuffer().getInt(fileOffset + classDumpSegment.instanceSizeOffset); }
public JavaClass getSuperClass() { long superClassId = getHprofBuffer().getID(fileOffset + classDumpSegment.superClassIDOffset); return classDumpSegment.getClassDumpByID(superClassId); }
int idSize = dumpBuffer.getIDSize(); long[] offset = new long[] { allInstanceDumpBounds.startOffset }; Map classIdToClassMap = classDumpBounds.getClassIdToClassMap(); Iterator classesIt = getClassDumpSegment().createClassCollection().iterator();
public JavaClass getJavaClassByName(String fqn) { if (heapDumpSegment == null) { return null; } return getClassDumpSegment().getJavaClassByName(fqn); }
public Collection<JavaClass> getJavaClassesByRegExp(String regexp) { if (heapDumpSegment == null) { return Collections.emptyList(); } return getClassDumpSegment().getJavaClassesByRegExp(regexp); }
newBounds = new ClassDumpSegment(this, start, end); } else { newBounds = new TagBounds(tag, start, end);
} else if (tag == HprofHeap.PRIMITIVE_ARRAY_DUMP) { byte type = dumpBuffer.get(start + 1 + idSize + 4 + 4); instanceClassId = classDumpSegment.getPrimitiveArrayClass(type).getJavaClassId();
int idSize = dumpBuffer.getIDSize(); long[] offset = new long[] { allInstanceDumpBounds.startOffset }; Map classIdToClassMap = classDumpBounds.getClassIdToClassMap(); byte type = dumpBuffer.get(start + 1 + idSize + 4 + 4); instanceIdOffset = 1; classDump = classDumpBounds.getPrimitiveArrayClass(type); classDump.registerInstance(start); instanceEntry.setIndex(classDump.getInstancesCount()); classDumpBounds.addInstanceSize(classDump, tag, start);