On Fri, 9 Jun 2023 22:17:39 GMT, Naoto Sato <na...@openjdk.org> wrote:

> This is stemming from the PR: https://github.com/openjdk/jdk/pull/14211 where 
> aggressive GC can cause NPE in `BaseLocale$Key` class. I refactored the 
> in-house cache with WeakHashMap, and removed the Key class as it is no longer 
> needed (thus the original NPE will no longer be possible). Also with the new 
> JMH test case, it gains some performance improvement:
> 
> (w/o fix)
> 
> Benchmark                       Mode  Cnt      Score     Error  Units
> LocaleCache.testForLanguageTag  avgt   20   5781.275 ± 569.580  ns/op
> LocaleCache.testLocaleOf        avgt   20  62564.079 ± 406.697  ns/op
> 
> (w/ fix)
> Benchmark                       Mode  Cnt      Score     Error  Units
> LocaleCache.testForLanguageTag  avgt   20   4801.175 ± 371.830  ns/op
> LocaleCache.testLocaleOf        avgt   20  60394.652 ± 352.471  ns/op

One thing though - WeakHashMap is not thread safe - and I don't see any locks 
or synchronized to protect access to CACHE. Is that going to cause trouble if 
two threads compete to add a locale to the map? In other words - how confident 
are we that the race would be benign?

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

PR Review: https://git.openjdk.org/jdk/pull/14404#pullrequestreview-1475096535

Reply via email to