[14] RFR 8228720: Shenandoah: Implementation of concurrent class unloading

Zhengyu Gu zgu at redhat.com
Wed Nov 27 14:17:26 UTC 2019

Shenandoah concurrent class unloading has been baked in shenandoah/jdk 
repo for quite some time, it is ready for integration into 14.

The implementation is similar to ZGC's with added complexity, due to 
additional GC modes other than concurrent mode. E.g. degenerated GC and 
full GC.

This patch only contains Shenandoah specific changes, the shared part 
has been upstreamed under JDK-8230765 to support x86_32 platforms.

A few key points:

1) Available on x86_64 and x86_32 platforms with Shenandoah concurrent 
GC (not yet with traversal GC)

2) Concurrent class unloading is enabled by default with Shenandoah 
concurrent GC for every GC cycle. Class unloading can be disabled with 
-XX:-ClassUnloading/-XX:-ClassUnloadingWithConcurrentMark and frequency 
can be changed via experimental flag -XX:ShenandoahRefProcFrequency=n

3) For degenerated GC and full GC, class unloading falls back to STW.

Bug: https://bugs.openjdk.java.net/browse/JDK-8228720
Webrev: http://cr.openjdk.java.net/~zgu/JDK-8228720/webrev.02

   hotspot_gc_shenandoah (fastdebug and release) with x86_64 and x86_32
   JVM on Linux.



More information about the hotspot-gc-dev mailing list