RFR: 8309622: Re-examine the cache mechanism in BaseLocale
Naoto Sato
naoto at openjdk.org
Fri Jun 9 23:34:44 UTC 2023
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
-------------
Commit messages:
- minor comment fix
- equals/hash fix, constructor simplification
- Removed Key
- minor fixup
- Use WeakHashMap
- Modified JMH test
- Added a test variation for the issue
- added microbenchmark
- 8309622: Re-examine the cache mechanism in BaseLocale
Changes: https://git.openjdk.org/jdk/pull/14404/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=14404&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8309622
Stats: 244 lines in 3 files changed: 104 ins; 117 del; 23 mod
Patch: https://git.openjdk.org/jdk/pull/14404.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/14404/head:pull/14404
PR: https://git.openjdk.org/jdk/pull/14404
More information about the core-libs-dev
mailing list