The clock and timestamp fields in SoftReference should be declared volatile. These fields are read or updated by the VM, (possibly) concurrently with the execution of Java threads.

To be more specific, the timestamp field is read by the GC during reference discovery, e.g. during G1/CMS concurrent mark. The clock is updated by the GC, typically after reference processing has completed.

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

/Per

Reply via email to