RFR/C: 8218922: SA: Enable best-effort implementation of live regions iteration for ZGC
stefan.karlsson at oracle.com
Thu Feb 14 10:13:00 UTC 2019
Thanks for taking a look at this!
On 2019-02-14 10:58, Erik Österlund wrote:
> Hi Stefan,
> I think this makes things better. I like the cleanups and I like the
> partial support for heap parsing. I think we should bring this in, and
> it looks good to me.
> Of course we can always improve this further at some point in the future
> to deal with broken Klass pointers better.
> On 2019-02-13 15:52, Stefan Karlsson wrote:
>> Hi all,
>> Please review / comment on this patch to enable a best-effort live
>> heap region iteration implementation in ZGC.
>> The SA has functionally that relies on live heap region information
>> from the GCs. This is problematic when dead objects are left in the
>> heap, and their classes have been unloaded.
>> Because of this ZGC has so far not implemented this feature. However,
>> we could provide a best-effort implementation that most likely will
>> work if classes are not unloaded (or class unloading is turned off),
>> and otherwise might fail to fully parse and report all live heap regions.
>> For active, non-relocating pages the patch simply returns [start, top)
>> and for pages being actively relocated, it reports regions containing
>> the non-forwarded objects, the other objects are either dead or could
>> be found in one of the to-regions.
>> With this patch I'm able to get heap histograms with ZGC.
>> Maybe this is enough to enable a bit more SA debugging capabilities
>> when running with ZGC? What do you think, should we bring in this change?
>> To be able to implement this more cleanly I've restructured the live
>> region collection, and pushed GC specific code into the specific GCs.
>> There are some extra usage of generics to make the code a bit easier
>> to read and develop.
More information about the hotspot-gc-dev