> JDK-8277072 introduced java.io.ClassCache, but there seem to be at least two 
> issues with it:
>   - The cache cannot disambiguate between cleared SoftReference and the 
> accidental passing of `null` value; in that case, the retry loop would spin 
> indefinitely;
>   - If retry loop would spin several times, every time discovering a cleared 
> SoftReference, it would create and register new SoftReference on the 
> ReferenceQueue. However, it would not *drain* the RQ in the loop; in that 
> case, we might have the unbounded garbage accumulating in RQ; 
> 
> Attention @rkennke, @plevart.
> 
> Additional testing:
>   - [x] Linux x86_64 fastdebug `java/io/ObjectStreamClass`
>   - [x] Linux x86_64 fastdebug `tier1`
>   - [x] Linux x86_64 fastdebug `tier2`
>   - [x] Linux x86_64 fastdebug `tier3`

Aleksey Shipilev has updated the pull request with a new target base due to a 
merge or a rebase. The incremental webrev excludes the unrelated changes 
brought in by the merge/rebase. The pull request contains ten additional 
commits since the last revision:

 - Drop unnecessary null check in clearStrong
 - Merge branch 'master' into JDK-8280041-classcache-problems
 - Guarantee progress for at least one thread
 - Merge branch 'master' into JDK-8280041-classcache-problems
 - Test summary
 - GC sanity test
 - NullValueTest
 - Merge branch 'master' into JDK-8280041-classcache-problems
 - Fix

-------------

Changes:
  - all: https://git.openjdk.java.net/jdk/pull/7092/files
  - new: https://git.openjdk.java.net/jdk/pull/7092/files/0f2dcd0d..17073ef2

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=jdk&pr=7092&range=04
 - incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=7092&range=03-04

  Stats: 330 lines in 51 files changed: 159 ins; 70 del; 101 mod
  Patch: https://git.openjdk.java.net/jdk/pull/7092.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/7092/head:pull/7092

PR: https://git.openjdk.java.net/jdk/pull/7092

Reply via email to