On Wed, 11 Feb 2026 23:14:25 GMT, Chen Liang <[email protected]> wrote:
> Is there a reason why this only happens for WeakReferenceKey but not > SoftReferenceKey? WeakReferenceKey is used in this call stack when creating a CDS archive during the JDK build process: at java.base/jdk.internal.util.WeakReferenceKey.equals(WeakReferenceKey.java:73) at java.base/java.util.concurrent.ConcurrentHashMap.putVal(ConcurrentHashMap.java:1054) at java.base/java.util.concurrent.ConcurrentHashMap.putIfAbsent(ConcurrentHashMap.java:1558) at java.base/jdk.internal.util.ReferencedKeyMap.internKey(ReferencedKeyMap.java:460) at java.base/jdk.internal.util.ReferencedKeyMap.intern(ReferencedKeyMap.java:396) at java.base/jdk.internal.util.ReferencedKeySet.intern(ReferencedKeySet.java:178) at java.base/java.lang.invoke.MethodType.makeImpl(MethodType.java:410) at java.base/java.lang.invoke.MethodType.methodType(MethodType.java:312) at java.base/java.lang.invoke.MemberName.getMethodOrFieldType(MemberName.java:110) at java.base/java.lang.invoke.DirectMethodHandle.make(DirectMethodHandle.java:81) at java.base/java.lang.invoke.DirectMethodHandle.make(DirectMethodHandle.java:130) at java.base/java.lang.invoke.MethodHandles$Lookup.getDirectFieldCommon(MethodHandles.java:3917) at java.base/java.lang.invoke.MethodHandles$Lookup.getDirectField(MethodHandles.java:3912) at java.base/java.lang.invoke.MethodHandles$Lookup.findGetter(MethodHandles.java:2952) at java.base/java.lang.invoke.ClassSpecializer$Factory.findGetter(ClassSpecializer.java:861) at java.base/java.lang.invoke.ClassSpecializer$Factory.findGetters(ClassSpecializer.java:870) at java.base/java.lang.invoke.ClassSpecializer$Factory.linkSpeciesDataToCode(ClassSpecializer.java:898) at java.base/java.lang.invoke.ClassSpecializer$Factory.loadSpecies(ClassSpecializer.java:505) at java.base/java.lang.invoke.ClassSpecializer.findSpecies(ClassSpecializer.java:212) at java.base/java.lang.invoke.BoundMethodHandle$SpeciesData.extendWith(BoundMethodHandle.java:406) at java.base/java.lang.invoke.LambdaForm.createConstantForm(LambdaForm.java:1642) at java.base/java.lang.invoke.LambdaForm.constantForm(LambdaForm.java:1637) at java.base/java.lang.invoke.GenerateJLIClassesHelper.generateBasicFormsClassBytes(GenerateJLIClassesHelper.java:467) at java.base/java.lang.invoke.GenerateJLIClassesHelper$HolderClassBuilder.build(GenerateJLIClassesHelper.java:262) at java.base/java.lang.invoke.GenerateJLIClassesHelper.generateHolderClasses(GenerateJLIClassesHelper.java:444) at java.base/java.lang.invoke.MethodHandleImpl$1.generateHolderClasses(MethodHandleImpl.java:1560) at java.base/jdk.internal.misc.CDS.generateLambdaFormHolderClasses(CDS.java:238) SoftReferenceKeys are not used: $ java -Xshare:dump -Xlog:class+init | grep ReferenceKe Initializing 'jdk/internal/util/StrongReferenceKey'(no method) (0x000000005304c968) by thread "main" Initializing 'jdk/internal/util/WeakReferenceKey'(no method) (0x000000005304cfb8) by thread "main" ------------- PR Comment: https://git.openjdk.org/jdk/pull/29678#issuecomment-3887839876
