gpt4 book ai didi

java - WeakReferences、Weakashmaps、softreferences 的用途是什么?

转载 作者:行者123 更新时间:2023-12-02 06:37:36 26 4
gpt4 key购买 nike

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

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

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

还有this article大家都提到的,并没有提供可以帮助我理解的案例研究。

如果有人能想出一个场景并让我对此有一些理解,我将非常感激。

最佳答案

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

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

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

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com