当值引用键时,Java WeakHashMap 泄漏

问题描述 投票:0回答:1

我有一个 WeakHashMap,其中值可能引用键,这将导致内存泄漏,因为该值被保存为强引用,因此键将是强可达的。

value references weak key

有没有办法在不更改键或值的情况下避免这种情况(我只能包装它们,但不能修改它们的类)

我的最终目标是保持值不被GC收集,直到密钥强可达。 (我需要访问该值)

java garbage-collection weak-references
1个回答
0
投票

您可以将弱引用存储回密钥:

String myValue = "some value";
WeakHashMap<String, WeakReference<String>> myMap = new WeakHashMap<>();
myMap.put(myValue, new WeakReference<>(myValue));
© www.soinside.com 2019 - 2024. All rights reserved.