On Thu, 6 Jul 2023 12:20:15 GMT, Jim Laskey <jlas...@openjdk.org> wrote:
>> java.lang.runtime.ReferencedKeyMap was introduced to provide a concurrent >> caching scheme for Carrier objects. The technique used is generally useful >> for a variety of caching schemes and is being moved to be shared in other >> parts of the jdk. The MethodType interning case is one example. > > Jim Laskey has updated the pull request with a new target base due to a merge > or a rebase. The pull request now contains ten commits: > > - Merge branch 'master' into 8310913 > - Update to use VirtualThread friendly stale queue. > - Remove warning tied to String Templates > - unneeded SuppressWarning > - Wrong cast > - Move jdk.internal.referencedkey to jdk.internal.util > - Merge branch 'master' into 8310913 > - Update MethodType to use ReferencedKeySet > - Initial commit for ReferencedKeyMap and ReferencedKeySet src/java.base/share/classes/jdk/internal/util/ReferencedKeyMap.java line 111: > 109: this.isSoft = isSoft; > 110: this.map = map; > 111: this.stale = > SharedSecrets.getJavaLangRefAccess().newNativeReferenceQueue(); I don't think you want all `ReferencedKeyMap` instances use native reference queue which may cause the virtual thread to pin on the carrier thread if it synchronizes the monitor lock. Perhaps add a new factory method that takes a `ReferenceQueue` and `MethodType` will create it with `NativeReferenceQueue`. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/14684#discussion_r1254677202