RFR (M) 8202813: Move vm_weak processing from SystemDictionary to WeakProcessor

Stefan Johansson stefan.johansson at oracle.com
Tue May 29 10:27:49 UTC 2018


Hi Coleen,

On 2018-05-25 17:32, coleen.phillimore at oracle.com wrote:
> Summary: SystemDictionary has all strong roots.  The weak oop_storage is 
> processed by the WeakProcessor so it can be scanned and cleared 
> concurrently and/or by parallel threads.
> 
> Please see bug for explanation.
> 
> open webrev at http://cr.openjdk.java.net/~coleenp/8202813.01/webrev
> bug link https://bugs.openjdk.java.net/browse/JDK-8202813
> 
> There might be more GC code that can be cleaned out since 
> G1RootClosures->weak_oops() seems unused now, but I'd like to defer that 
> to a smaller cleanup.  Also ClassLoaderData is still processed 
> inconsistently by the GCs, which would be nice to clean up.
> 
> Tested with mach5 hs-tier1-5 with no failures.  Per's gc-test-suite, 
> dev-submit for performance testing, and runThese with all collectors, 
> with and without -XX:-ClassUnloading.  Also tested with class unloading 
> gc tests (which are also in hs-tier number tests).

The changes looks good, just a couple of questions:
* In your performance runs did you check the pause times? From what I 
can see some of the processing have moved from a parallel phase to a 
serial one, which could be problematic if the vm_weak_oop_storage is large.

* When turning of ClassUnloading we treated the vm_weak_oop_storage as 
strong roots in the past, was that not needed? I don't see this being 
done after this change.

Thanks,
Stefan

> 
> Thanks,
> Coleen


More information about the hotspot-dev mailing list