我有一个 WeakHashMap,其中值可能引用键,这将导致内存泄漏,因为该值被保存为强引用,因此键将是强可达的。
有没有办法在不更改键或值的情况下避免这种情况(我只能包装它们,但不能修改它们的类)
我的最终目标是保持值不被GC收集,直到密钥强可达。 (我需要访问该值)
您可以将弱引用存储回密钥:
String myValue = "some value";
WeakHashMap<String, WeakReference<String>> myMap = new WeakHashMap<>();
myMap.put(myValue, new WeakReference<>(myValue));