RFR: JDK-8272158: SoftReference related bugs under memory pressure

Jonathan Gibbons jjg at openjdk.java.net
Fri Aug 13 14:24:26 UTC 2021


On Wed, 11 Aug 2021 10:36:48 GMT, Hannes Wallnöfer <hannesw at openjdk.org> wrote:

> This change fixes two problems related to usage of soft references in javadoc. 
> 
> The one in `VisibleMemberTable` is rather trivial, it just avoids getting the softly referenced value twice, which allowed GC to clear the reference between the two calls. 
> 
> For the one in `CommentHelper`, I considered a few different solutions: Store CommentHelper instances with hard references, compute the overridden element information on demand instead of storing it in the object, or ignore missing overridden object info based on the rationale that any issues should already have been reported on the overridden element itself. I decided to go with the on-demand lookup of overridden elements as the additional overhead was minimal (a total of 3 milliseconds for the JDK docs) and the reduction in state/complexity seemed like an additional benefit.
> 
> I labeled the issue as "noreg-hard". To test the fix I ran the JDK `docs` target with reduced heap space (appending `-Xmx664m` to `$1_JAVA_ARGS` in make/Docs.gmk). With max heap values in that range, the task either succeeds or fails with `OutOfMemoryError`. Previously, it sometimes failed with `NullPointerException` due to one of the two issues.

Maybe we should have a general review of the use of `SoftReference` and `WeakReference` in javadoc and the standard doclet.

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

Marked as reviewed by jjg (Reviewer).

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


More information about the javadoc-dev mailing list