ZGC: RFR: 8207843: HSDB cannot show Object Histogram when ZGC is working

Per Liden per.liden at oracle.com
Tue Aug 7 12:32:04 UTC 2018


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



More information about the hotspot-gc-dev mailing list