LongMap.Entry entry = idToOffsetMap.get(outId); if (entry != null) { entry.addReference(instanceId); } else { LongMap.Entry entry = idToOffsetMap.get(outId); if (entry != null) { entry.addReference(instanceId); } else { entry.addReference(classDump.getJavaClassId());
void addReference(long instanceId) { try { byte flags = getFlags(); long ref = getReferencesPointer(); if ((flags & NUMBER_LIST) == 0) { // reference list is not used if (ref == 0L) { // no reference was set setReferencesPointer(instanceId); } else if (ref != instanceId) { // one reference was set, switch to reference list setFlags((byte)(flags | NUMBER_LIST)); long list = referenceList.addFirstNumber(ref,instanceId); setReferencesPointer(list); } } else { // use reference list long newRef = referenceList.addNumber(ref,instanceId); if (newRef != ref) { setReferencesPointer(newRef); } } } catch (IOException ex) { ex.printStackTrace(); } }
private boolean processInstance(Instance instance, long size, long retainedSize) throws IOException { if (size != -1) { LongMap.Entry entry = heap.idToOffsetMap.get(instance.getInstanceId()); entry.setRetainedSize((int)(instance.getSize()+retainedSize)); entry.setTreeObj(); if (entry.hasOnlyOneReference()) { long gcRootPointer = entry.getNearestGCRootPointer(); if (gcRootPointer != 0) { if (!unique.contains(gcRootPointer)) { unique.add(gcRootPointer); writeLong(gcRootPointer); } } } return true; } return false; }
LongMap.Entry entry = idToOffsetMap.get(outId); if (entry != null) { entry.addReference(instanceId); } else { LongMap.Entry entry = idToOffsetMap.get(outId); if (entry != null) { entry.addReference(instanceId); } else { entry.addReference(classDump.getJavaClassId());
LongMap.Entry entry = idToOffsetMap.get(outId); if (entry != null) { entry.addReference(instanceId); } else { LongMap.Entry entry = idToOffsetMap.get(outId); if (entry != null) { entry.addReference(instanceId); } else { entry.addReference(classDump.getJavaClassId());
List refs = entry.getReferences(); Iterator refIt = refs.iterator(); Long newIdomIdObj = (Long)refIt.next();
List refs = entry.getReferences(); Iterator refIt = refs.iterator(); Long newIdomIdObj = (Long)refIt.next();
List<Long> refIds = idToOffsetMap.get(instanceId).getReferences(); Iterator<Long> refIdsIt = refIds.iterator(); int idSize = dumpBuffer.getIDSize(); offset[0] = idToOffsetMap.get(foundInstanceId).getOffset(); @SuppressWarnings("unused") int classIdOffset = 0;
LongMap.Entry instanceEntry = idToOffsetMap.get(instanceId); long idom = domTree.getIdomId(instanceId,instanceEntry); boolean isTreeObj = instanceEntry.isTreeObj(); long instSize = 0; if (!isTreeObj && (instanceEntry.getNearestGCRootPointer() != 0 || getGCRoot(new Long(instanceId)) != null)) { long origSize = instanceEntry.getRetainedSize(); if (origSize < 0) origSize = 0; instSize = getInstanceByID(instanceId).getSize(); instanceEntry.setRetainedSize(origSize + instSize); size = instanceEntry.getRetainedSize(); } else { assert instSize != 0; if (entry.isTreeObj()) { break; long retainedSize = entry.getRetainedSize(); if (retainedSize < 0) retainedSize = 0; entry.setRetainedSize(retainedSize+size);
List refIds = idToOffsetMap.get(instanceId).getReferences(); Iterator refIdsIt = refIds.iterator(); int idSize = dumpBuffer.getIDSize(); offset[0] = idToOffsetMap.get(foundInstanceId).getOffset(); int classIdOffset = 0; int instanceIdOffset = 0;
LongMap.Entry instanceEntry = idToOffsetMap.get(instanceId); long idom = domTree.getIdomId(instanceId,instanceEntry); boolean isTreeObj = instanceEntry.isTreeObj(); long instSize = 0; if (!isTreeObj && (instanceEntry.getNearestGCRootPointer() != 0 || getGCRoot(new Long(instanceId)) != null)) { long origSize = instanceEntry.getRetainedSize(); if (origSize < 0) origSize = 0; instSize = getInstanceByID(instanceId).getSize(); instanceEntry.setRetainedSize(origSize + instSize); size = instanceEntry.getRetainedSize(); } else { assert instSize != 0; if (entry.isTreeObj()) { break; long retainedSize = entry.getRetainedSize(); if (retainedSize < 0) retainedSize = 0; entry.setRetainedSize(retainedSize+size);
long start = entry.getOffset(); assert start != 0L;
long start = entry.getOffset(); assert start != 0L;
long[] getBiggestObjectsByRetainedSize(int number) { SortedSet bigObjects = new TreeSet(); long[] bigIds = new long[number]; long min = 0; for (long index=0;index<fileSize;index+=ENTRY_SIZE) { long id = getID(index); if (id != 0) { long retainedSize = createEntry(index).getRetainedSize(); if (bigObjects.size()<number) { bigObjects.add(new RetainedSizeEntry(id,retainedSize)); min = ((RetainedSizeEntry)bigObjects.last()).retainedSize; } else if (retainedSize>min) { bigObjects.remove(bigObjects.last()); bigObjects.add(new RetainedSizeEntry(id,retainedSize)); min = ((RetainedSizeEntry)bigObjects.last()).retainedSize; } } } int i = 0; Iterator it = bigObjects.iterator(); while(it.hasNext()) { bigIds[i++]=((RetainedSizeEntry)it.next()).instanceId; } return bigIds; } }
long[] getBiggestObjectsByRetainedSize(int number) { SortedSet<RetainedSizeEntry> bigObjects = new TreeSet<RetainedSizeEntry>(); long[] bigIds = new long[number]; long min = 0; for (long index=0;index<fileSize;index+=ENTRY_SIZE) { long id = getID(index); if (id != 0) { long retainedSize = createEntry(index).getRetainedSize(); if (bigObjects.size()<number) { bigObjects.add(new RetainedSizeEntry(id,retainedSize)); min = ((RetainedSizeEntry)bigObjects.last()).retainedSize; } else if (retainedSize>min) { bigObjects.remove(bigObjects.last()); bigObjects.add(new RetainedSizeEntry(id,retainedSize)); min = ((RetainedSizeEntry)bigObjects.last()).retainedSize; } } } int i = 0; Iterator<RetainedSizeEntry> it = bigObjects.iterator(); while(it.hasNext()) { bigIds[i++]=((RetainedSizeEntry)it.next()).instanceId; } return bigIds; }
void addReference(long instanceId) { try { byte flags = getFlags(); long ref = getReferencesPointer(); if ((flags & NUMBER_LIST) == 0) { // reference list is not used if (ref == 0L) { // no reference was set setReferencesPointer(instanceId); } else if (ref != instanceId) { // one reference was set, switch to reference list setFlags((byte)(flags | NUMBER_LIST)); long list = referenceList.addFirstNumber(ref,instanceId); setReferencesPointer(list); } } else { // use reference list long newRef = referenceList.addNumber(ref,instanceId); if (newRef != ref) { setReferencesPointer(newRef); } } } catch (IOException ex) { ex.printStackTrace(); } }
private boolean writeConnection(long instanceId, long refInstanceId, boolean addRefInstanceId) throws IOException { if (refInstanceId != 0) { LongMap.Entry entry = heap.idToOffsetMap.get(refInstanceId); if (entry != null && entry.getNearestGCRootPointer() == 0L && heap.getGCRoot(refInstanceId) == null) { writeLong(refInstanceId); if (addRefInstanceId) { if (!checkReferences(refInstanceId, instanceId)) { entry.addReference(instanceId); } } entry.setNearestGCRootPointer(instanceId); if (!entry.hasOnlyOneReference()) { multipleParents.writeLong(refInstanceId); //multiParentsCount++; } return true; } return !addRefInstanceId && entry != null; } return false; }
void addReference(long instanceId) { try { byte flags = getFlags(); long ref = getReferencesPointer(); if ((flags & NUMBER_LIST) == 0) { // reference list is not used if (ref == 0L) { // no reference was set setReferencesPointer(instanceId); } else if (ref != instanceId) { // one reference was set, switch to reference list setFlags((byte)(flags | NUMBER_LIST)); long list = referenceList.addFirstNumber(ref,instanceId); setReferencesPointer(list); } } else { // use reference list long newRef = referenceList.addNumber(ref,instanceId); if (newRef != ref) { setReferencesPointer(newRef); } } } catch (IOException ex) { ex.printStackTrace(); } }
private boolean writeConnection(long instanceId, long refInstanceId, boolean addRefInstanceId) throws IOException { if (refInstanceId != 0) { LongMap.Entry entry = heap.idToOffsetMap.get(refInstanceId); if (entry != null && entry.getNearestGCRootPointer() == 0L && heap.getGCRoot(refInstanceId) == null) { writeLong(refInstanceId); if (addRefInstanceId) { if (!checkReferences(refInstanceId, instanceId)) { entry.addReference(instanceId); } } entry.setNearestGCRootPointer(instanceId); if (!entry.hasOnlyOneReference()) { multipleParents.writeLong(refInstanceId); //multiParentsCount++; } return true; } return !addRefInstanceId && entry != null; } return false; }
private boolean processInstance(Instance instance, long size, long retainedSize) throws IOException { if (size != -1) { LongMap.Entry entry = heap.idToOffsetMap.get(instance.getInstanceId()); entry.setRetainedSize((int)(instance.getSize()+retainedSize)); entry.setTreeObj(); if (entry.hasOnlyOneReference()) { long gcRootPointer = entry.getNearestGCRootPointer(); if (gcRootPointer != 0) { if (!unique.contains(gcRootPointer)) { unique.add(gcRootPointer); writeLong(gcRootPointer); } } } return true; } return false; }