gpt4 book ai didi

java - 什么时候应该使用 MapMaker 类的 weakValues()?

转载 作者:搜寻专家 更新时间:2023-11-01 03:13:03 27 4
gpt4 key购买 nike

当映射中的条目具有弱引用时,该条目将在下一次垃圾收集时被删除,对吗?

可以理解为MapMaker类提供了weakKeys方法。但我对 weakValue() 感到困惑。我什么时候应该在 MapMaker 中使用 weakValuesoftValue

最佳答案

你会使用 weakValues()当您希望对其值难以访问的条目进行垃圾回收时。例如,这可能何时有用...假设您有一个类,允许用户向其添加对象并将它们作为值存储在 Map 中。无论出于何种原因。此类通常用作单例,因此它会在您的应用程序运行的整个过程中一直存在。但是,用户添加到其中的对象不一定是长期存在的。该应用程序将在完成之前很久就与他们一起完成。您不希望用户在完成这些对象时必须从您的类中手动删除这些对象,但是您不希望通过在您的类中永远保留对它们的引用而导致内存泄漏(换句话说,垃圾收集应该只是像平常一样工作,忽略你的类(class))。解决方法是给 map weakValues()一切都会如您所愿。

softValues()适合缓存...如果你有 Map<Integer, Foo>并且您希望条目可以根据内存需求移动,您会想要使用它。你不想使用 weakKeys()softKeys()因为他们都使用 == identity,这会给您带来问题(无法使用键 300 获取值,因为您传入的键可能不是 == 映射中的键)。

关于java - 什么时候应该使用 MapMaker 类的 weakValues()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5363212/

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