RFR(XS) 8213250 CDS archive creation aborts due to metaspace object allocation failure
Ioi Lam
ioi.lam at oracle.com
Thu Nov 1 18:07:13 UTC 2018
https://bugs.openjdk.java.net/browse/JDK-8213250
http://cr.openjdk.java.net/~iklam/jdk12/8213250-cds-dump-run-out-of-metaspace.v01/
When Metaspace::allocate() fails, usually we first try to GC to see if
some MetaspaceObjs can be freed. This is an optimization to avoid
prematurely
expanding the metaspace.
However, GC cannot run in the last phase of CDS which runs inside the VM
thread.
The old code just aborts the CDS dump. The fix is to unconditionally
expand the
metaspace without doing a GC.
(During GC dump time, no classes are unloaded, so even if we force a GC,
it would
not free up any metaspace anyway).
Testing:
Before the fix, the test case (jruby) would fail to dump once a couple
of times. Now
it has dumped hundreds of times without failure.
I am also running hs-tier 1/2
Thanks
- Ioi
More information about the hotspot-dev
mailing list