[8u, 11u] RFR: Shenandoah: enable low-frequency STW class unloading
Aleksey Shipilev
shade at redhat.com
Mon Jul 20 14:21:04 UTC 2020
Hi,
I think we have gathered enough real world data to consider enabling STW class unloading by default,
but on much lower frequency. The concurrent class unloading is enabled by default since JDK 14,
because we have enough infrastructure there. In 8u and 11u, we don't have such luck, and so we can
only do STW class unloading, which adds to Final Mark time when it happens. This is why it was
disabled in 8u and 11u by default, asking users to explicitly enable it.
There are still good reasons to do it, even with STW:
a) String Table cruft accumulates over time;
b) CLDG cruft accumulates over time;
c) The connection between the two above and the disabled -CUwCM is very opaque;
The long-run performance stability would be improved if we accepted a longer Final Mark pause every
once in a while. It seems doing this every 100th cycle is a good spot? In many cases I've seen, the
GC runs a few times per minute, which means we would get the several class unloading cycles every
hour. That should be enough to amortize costs, and also be frequent enough to see as regular outlier
in users' monitoring, if they want to turn it off.
8u patch:
https://cr.openjdk.java.net/~shade/shenandoah/regular-stw-cu/webrev.01.8u/
Passes: hotspot_gc_shenandoah, ad-hoc runs
11u patch:
https://cr.openjdk.java.net/~shade/shenandoah/regular-stw-cu/webrev.01.11u/
Passes: hotspot_gc_shenandoah, tier{1,2} with Shenandoah
Thoughts?
--
Thanks,
-Aleksey
More information about the shenandoah-dev
mailing list