0

请解释 WeakReferences 的用途。我通常确实了解 Java 概念,但这给我带来了麻烦。

我确实理解什么是弱引用,但它们的用法和性质在我脑海中有点模糊。我无法想象一个正确的场景,其中使用 Wea​​kReferences 成为必要。

我也知道 WeakHashMap 与 WeakReferences 相关,其中包含空键的行会被自动删除。我无法想象这是怎么回事,我在某处有一个 WeakHashMap,而其他一些进程使一个键无效,然后 WeakHashMap 通过删除该行来节省一天的时间。

此外,每个人都参考的这篇文章没有提供可以帮助我理解的案例研究。

如果有人能想出一个场景并让我对此有所了解,我将不胜感激。

4

1 回答 1

2

如果没有其他人指向它,您不希望对象“粘”在周围时,基本上会使用弱引用。我认为在考虑弱引用时会有所帮助的一个非常常见的用例是使用弱哈希映射来维护规范映射。

考虑一种情况,您需要维护一个Class<?>实例和它所拥有的所有方法的列表之间的映射。鉴于 JVM 完全能够动态加载和卸载类,很有可能不再需要您在映射中作为键的类(没有其他任何东西指向它)。现在,如果您使用“强”引用来维护类到方法的映射,那么只要您的映射可访问,您的类就会一直存在,这在这种情况下不是一个好位置。您真正想要的是,一旦没有对您的“类”的实时引用,它应该被地图放开。这正是弱哈希映射的用途。

编辑:我建议阅读此线程

于 2013-10-20T13:42:33.827 回答