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

Reply via email to