RFR: 8277072: ObjectStreamClass caches keep ClassLoaders alive [v6]

Roman Kennke rkennke at openjdk.java.net
Thu Dec 2 16:22:02 UTC 2021


> The caches in ObjectStreamClass basically map WeakReference<Class> to SoftReference<ObjectStreamClass>, where the ObjectStreamClass also references the same Class. That means that the cache entry, and thus the class and its class-loader, will not get reclaimed, unless the GC determines that memory pressure is very high.
> 
> However, this seems bogus, because that unnecessarily keeps ClassLoaders and all its classes alive much longer than necessary: as soon as a ClassLoader (and all its classes) become unreachable, there is no point in retaining the stuff in OSC's caches.
> 
> The proposed change is to use WeakReference instead of SoftReference for the values in caches.
> 
> Testing:
>  - [x] tier1
>  - [x] tier2
>  - [x] tier3
>  - [ ] tier4

Roman Kennke has updated the pull request incrementally with one additional commit since the last revision:

  Remove unnecessary import

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

Changes:
  - all: https://git.openjdk.java.net/jdk/pull/6375/files
  - new: https://git.openjdk.java.net/jdk/pull/6375/files/570fac15..57428e0f

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

  Stats: 1 line in 1 file changed: 0 ins; 1 del; 0 mod
  Patch: https://git.openjdk.java.net/jdk/pull/6375.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/6375/head:pull/6375

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


More information about the core-libs-dev mailing list