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

我确实了解WeakReferences是什么,但是它们的用法和性质在我的脑海中有点模糊。我无法想象使用WeakReferences成为必要的正确方案。

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

每个人都提到的this article并没有提供有助于我理解的案例研究。

如果在那里有人可以提出一个方案并让我对此有所了解,我将非常感激。

最佳答案

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

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

编辑:我建议给this thread阅读。

关于java - WeakReferences,Weakhashmaps,softreferences用于什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19477915/

10-09 05:00