--- old/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/ObjectHeap.java 2018-11-28 19:11:45.908696228 +0100 +++ new/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/ObjectHeap.java 2018-11-28 19:11:45.751697383 +0100 @@ -246,15 +246,13 @@ } } - int cell_header_size = heap.cell_header_size(); - for (int i = 0; i < liveRegions.size(); i += 2) { Address bottom = (Address) liveRegions.get(i); Address top = (Address) liveRegions.get(i+1); try { // Traverses the space from bottom to top - OopHandle handle = bottom.addOffsetToAsOopHandle(cell_header_size); + OopHandle handle = bottom.addOffsetToAsOopHandle(0); while (handle.lessThan(top)) { Oop obj = null; @@ -291,7 +289,7 @@ if ( (cmsSpaceOld != null) && cmsSpaceOld.contains(handle)) { handle = handle.addOffsetToAsOopHandle(CompactibleFreeListSpace.adjustObjectSizeInBytes(obj.getObjectSize()) ); } else { - handle = handle.addOffsetToAsOopHandle(obj.getObjectSize() + cell_header_size); + handle = handle.addOffsetToAsOopHandle(obj.getObjectSize()); } } } @@ -371,8 +369,9 @@ G1CollectedHeap g1h = (G1CollectedHeap) heap; g1h.heapRegionIterate(lrc); } else if (heap instanceof ShenandoahHeap) { - ShenandoahHeap sh = (ShenandoahHeap) heap; - sh.heapRegionIterate(lrc); + // Operation (currently) not supported with Shenandoah GC. Print + // a warning and leave the list of live regions empty. + System.err.println("Warning: Operation not supported with ZGC"); } else if (heap instanceof ZCollectedHeap) { // Operation (currently) not supported with ZGC. Print // a warning and leave the list of live regions empty.