On Fri, 2 Jun 2023 01:07:27 GMT, SUN Guoyun <d...@openjdk.org> wrote:
>> SUN Guoyun has refreshed the contents of this pull request, and previous >> commits have been removed. The incremental views will show differences >> compared to the previous content of the PR. The pull request contains one >> new commit since the last revision: >> >> 8289220: Locale.forLanguageTag throws NPE due to soft ref used in locale >> cache being cleared > > src/java.base/share/classes/sun/util/locale/BaseLocale.java line 369: > >> 367: BaseLocale l = key.holder; >> 368: BaseLocale locale = new BaseLocale(l.getLanguage(), >> l.getScript(), l.getRegion(), l.getVariant(), true); >> 369: return (new Key(locale)).getBaseLocale(); > > Perhaps a more rigorous approach would look like this: > <pre><code class="java"> > BaseLocale locale = new BaseLocale(l.getLanguage(), l.getScript(), > l.getRegion(), l.getVariant(), true); > BaseLocal value = (new Key(locale)).getBaseLocale(); > Reference.reachabilityFence(locale); > return value; > </code></pre> > But the current patch has passed the tests with > `-XX:ShenandoahGCHeuristics=aggressive -XX:+ShenandoahOOMDuringEvacALot`, so > I think the current patch is OK. I still don't see a clear explanation of how the proposed patch fixes the problem. Also, I would appreciate the reasoning in the comments. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/14211#discussion_r1218629550