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; }
long origSize = instanceEntry.getRetainedSize(); if (origSize < 0) origSize = 0; instSize = getInstanceByID(instanceId).getSize(); size = instanceEntry.getRetainedSize(); } else { assert instSize != 0; break; long retainedSize = entry.getRetainedSize(); if (retainedSize < 0) retainedSize = 0; entry.setRetainedSize(retainedSize+size);
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; }
long origSize = instanceEntry.getRetainedSize(); if (origSize < 0) origSize = 0; instSize = getInstanceByID(instanceId).getSize(); size = instanceEntry.getRetainedSize(); } else { assert instSize != 0; break; long retainedSize = entry.getRetainedSize(); if (retainedSize < 0) retainedSize = 0; entry.setRetainedSize(retainedSize+size);
long origSize = instanceEntry.getRetainedSize(); if (origSize < 0) origSize = 0; instSize = getInstanceByID(instanceId).getSize(); size = instanceEntry.getRetainedSize(); } else { assert instSize != 0; break; long retainedSize = entry.getRetainedSize(); if (retainedSize < 0) retainedSize = 0; entry.setRetainedSize(retainedSize+size);
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; } }
private void writeLeaf(long instanceId, long size) throws IOException { LongMap.Entry entry = heap.idToOffsetMap.get(instanceId); entry.setTreeObj(); entry.setRetainedSize(size); //leavesCount++; if (entry.hasOnlyOneReference()) { long gcRootPointer = entry.getNearestGCRootPointer(); if (gcRootPointer != 0) { LongMap.Entry gcRootPointerEntry = heap.idToOffsetMap.get(gcRootPointer); if (gcRootPointerEntry.getRetainedSize() == 0) { gcRootPointerEntry.setRetainedSize(-1); leaves.writeLong(gcRootPointer); //firstLevel++; } } } }
private void writeLeaf(long instanceId, long size) throws IOException { LongMap.Entry entry = heap.idToOffsetMap.get(instanceId); entry.setTreeObj(); entry.setRetainedSize(size); //leavesCount++; if (entry.hasOnlyOneReference()) { long gcRootPointer = entry.getNearestGCRootPointer(); if (gcRootPointer != 0) { LongMap.Entry gcRootPointerEntry = heap.idToOffsetMap.get(gcRootPointer); if (gcRootPointerEntry.getRetainedSize() == 0) { gcRootPointerEntry.setRetainedSize(-1); leaves.writeLong(gcRootPointer); //firstLevel++; } } } }
private long checkInstance(long instanceId, Instance refInstance) throws IOException { if (refInstance != null) { LongMap.Entry refEntry = heap.idToOffsetMap.get(refInstance.getInstanceId()); if (!refEntry.hasOnlyOneReference()) { return -1; } if (!refEntry.isTreeObj()) { return -1; } return refEntry.getRetainedSize(); } return 0; } }
long getRetainedSize(Instance instance) { computeRetainedSize(); return idToOffsetMap.get(instance.getInstanceId()).getRetainedSize(); }
private long checkInstance(long instanceId, Instance refInstance) throws IOException { if (refInstance != null) { LongMap.Entry refEntry = heap.idToOffsetMap.get(refInstance.getInstanceId()); if (!refEntry.hasOnlyOneReference()) { return -1; } if (!refEntry.isTreeObj()) { return -1; } return refEntry.getRetainedSize(); } return 0; } }
long getRetainedSize(Instance instance) { computeRetainedSize(); return idToOffsetMap.get(instance.getInstanceId()).getRetainedSize(); }
private void writeLeaf(long instanceId, long size) throws IOException { LongMap.Entry entry = heap.idToOffsetMap.get(instanceId); entry.setTreeObj(); entry.setRetainedSize(size); //leavesCount++; if (entry.hasOnlyOneReference()) { long gcRootPointer = entry.getNearestGCRootPointer(); if (gcRootPointer != 0) { LongMap.Entry gcRootPointerEntry = heap.idToOffsetMap.get(gcRootPointer); if (gcRootPointerEntry.getRetainedSize() == 0) { gcRootPointerEntry.setRetainedSize(-1); leaves.writeLong(gcRootPointer); //firstLevel++; } } } }
private long checkInstance(long instanceId, Instance refInstance) throws IOException { if (refInstance != null) { LongMap.Entry refEntry = heap.idToOffsetMap.get(refInstance.getInstanceId()); if (!refEntry.hasOnlyOneReference()) { return -1; } if (!refEntry.isTreeObj()) { return -1; } return refEntry.getRetainedSize(); } return 0; } }
long getRetainedSize(Instance instance) { computeRetainedSize(); return idToOffsetMap.get(instance.getInstanceId()).getRetainedSize(); }