WeakReferences,Weakhashmaps,softreferences用于什么?

时间:2013-10-20 13:29:45

标签: java garbage-collection weak-references weakhashmap

请解释WeakReferences的用途。我通常都了解Java概念,但这个概念给了我麻烦。

我确实理解WeakReferences是什么,但它的用法和性质在我脑海里有点模糊。我无法想象使用WeakReferences成为必需的正确场景。

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

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

如果那里的任何人都能想出一个场景并让我对此有所了解,我将非常感激。

1 个答案:

答案 0 :(得分:2)

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

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

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