Hi Yasumasa,
I'm afraid this approach of iterating over objects doesn't work. In ZGC,
you can't walk over ZPages since some objects in there might be
unreachable and hence might have an invalid/dead class pointer, which in
turn means you can't tell the size of the object. When iterating over
the heap you must start from the roots and only visit live objects. This
becomes very complicated to do in the SA, which is why it hasn't been
implemented.
cheers,
Per
On 07/26/2018 03:52 PM, Yasumasa Suenaga wrote:
CC'ing to hotspot-gc-dev
On 2018/07/26 21:30, Yasumasa Suenaga wrote:
PING: Could you review it?
webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8207843/webrev.00/
Yasumasa
On 2018/07/19 23:03, Yasumasa Suenaga wrote:
Hi all,
Please review this webrev.
JBS: https://bugs.openjdk.java.net/browse/JDK-8207843
webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8207843/webrev.00/
I encountered AssertionFailure when I attached HSDB to the process
which is working with ZGC as below:
sun.jvm.hotspot.utilities.AssertionFailure: Unexpected CollectedHeap
type: sun.jvm.hotspot.gc.z.ZCollectedHeap
at
jdk.hotspot.agent/sun.jvm.hotspot.utilities.Assert.that(Assert.java:32)
at
jdk.hotspot.agent/sun.jvm.hotspot.oops.ObjectHeap.collectLiveRegions(ObjectHeap.java:448)
at
jdk.hotspot.agent/sun.jvm.hotspot.oops.ObjectHeap.iterate(ObjectHeap.java:173)
at
jdk.hotspot.agent/sun.jvm.hotspot.HSDB$VisitHeap.run(HSDB.java:1741)
at
jdk.hotspot.agent/sun.jvm.hotspot.utilities.WorkerThread$MainLoop.run(WorkerThread.java:70)
at java.base/java.lang.Thread.run(Thread.java:832)
ObjectHeap#collectLiveRegions() branches by instance type of
CollectedHeap. However it does not support ZCollectedHeap.
So I add ZCollectedHeap to it and add some methods to iterate
ZPageTable.
Thanks,
Yasumasa