protected LongMap initIdMap() throws FileNotFoundException, IOException { return new LongMap(idMapSize,dumpBuffer.getIDSize(),dumpBuffer.getFoffsetSize()); }
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; }
LongMap.Entry entry = idToOffsetMap.get(outId); if (entry != null) { entry.addReference(instanceId); LongMap.Entry entry = idToOffsetMap.get(outId); if (entry != null) { entry.addReference(instanceId); LongMap.Entry entry = idToOffsetMap.get(outId); if (entry == null) { idToOffsetMap.flush(); HeapProgress.progressFinish(); referencesComputed = true;
long idToDumpOffset(long instanceId) { Entry entry = idToOffsetMap.get(instanceId); return entry == null ? 0 : entry.getOffset(); }
void addClassEntry(long instanceId, long offset, int index) { LongMap.Entry entry = idToOffsetMap.put(instanceId, offset); entry.setIndex(index); }
public List<Instance> getBiggestObjectsByRetainedSize(int number) { long[] ids; List<Instance> bigObjects = new ArrayList<Instance>(number); computeRetainedSize(); ids = idToOffsetMap.getBiggestObjectsByRetainedSize(number); for (int i=0;i<ids.length;i++) { bigObjects.add(getInstanceByID(ids[i])); } return bigObjects; }
private Entry(long off,long value) { offset = off; putFoffset(offset + KEY_SIZE, value); }
private long getReferencesPointer() { return getID(offset + KEY_SIZE + FOFFSET_SIZE + 4 + 1); }
long getOffset() { return getFoffset(offset + KEY_SIZE); }
private void setReferencesPointer(long instanceId) { putID(offset + KEY_SIZE + FOFFSET_SIZE + 4 + 1, instanceId); }
heap.idToOffsetMap.flush(); HeapProgress.progressFinish(); gcRootsComputed = true;
long getIdomId(long instanceId, LongMap.Entry entry) { Long idomEntry = (Long) map.get(new Long(instanceId)); if (idomEntry != null) { return idomEntry.longValue(); } if (entry == null) { entry = heap.idToOffsetMap.get(instanceId); } return entry.getNearestGCRootPointer(); }
instanceEntry = idToOffsetMap.put(instanceId, start);
public List getBiggestObjectsByRetainedSize(int number) { long[] ids; List bigObjects = new ArrayList(number); computeRetainedSize(); ids = idToOffsetMap.getBiggestObjectsByRetainedSize(number); for (int i=0;i<ids.length;i++) { bigObjects.add(getInstanceByID(ids[i])); } return bigObjects; }
private Entry(long off,long value) { offset = off; putFoffset(offset + KEY_SIZE, value); }
private long getReferencesPointer() { return getID(offset + KEY_SIZE + FOFFSET_SIZE + 4 + 1); }
long getOffset() { return getFoffset(offset + KEY_SIZE); }
private void setReferencesPointer(long instanceId) { putID(offset + KEY_SIZE + FOFFSET_SIZE + 4 + 1, instanceId); }
heap.idToOffsetMap.flush(); HeapProgress.progressFinish(); gcRootsComputed = true;
private Long getNearestGCRootPointer(Long instanceIdLong) { LongMap.Entry entry; Long nearestGCLong = (Long) nearestGCRootCache.get(instanceIdLong); Long nearestGC; if (nearestGCLong != null) { return nearestGCLong; } entry = heap.idToOffsetMap.get(instanceIdLong.longValue()); nearestGC = Long.valueOf(entry.getNearestGCRootPointer()); nearestGCRootCache.put(instanceIdLong,nearestGC); return nearestGC; }