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