RFR: 8205022: ZGC: SoftReferences not always cleared before throwing OOME

Per Liden per.liden at oracle.com
Thu Jun 14 09:42:36 UTC 2018


The spec says "All soft references to softly-reachable objects are 
guaranteed to have been cleared before the virtual machine throws an 
OutOfMemoryError".

We currently have a window/race in ZGC, where we can throw OOME before 
clearing all SoftReferences with a softly-reachable referent. The reason 
is that the current logic only guarantees that we wait with throwing 
OOME until the allocating thread have been part of a complete GC cycle, 
but there is no guarantee that the last GC cycle also cleared 
SoftReferences.

This race is causing rare/intermittent failures in tier2 testing 
(TestSoftRerencesBahviorOnOOME).

Bug: https://bugs.openjdk.java.net/browse/JDK-8205022
Webrev: http://cr.openjdk.java.net/~pliden/8205022/webrev.0/

Testing: tier{1,2,3,4}

/Per



More information about the hotspot-gc-dev mailing list