我在阅读有关Java中弱引用的内容时发现,如果一个对象只有弱引用,那么它可以被垃圾收集器回收。但是,如果您在使用该值之前引用变为无效,会发生什么呢?
例如:
假设我有一个弱哈希映射,其键为{1,2,3,4,5},所有键的值均为1。现在假设您有一个生成[1:10]数字的随机数生成器。每次获取数字时,它会检查它是否是映射中的键,并给予该键临时强引用。因此,通过这种设置,您将拥有一些具有强引用并因此留在内存中的键,但您也有一些键在被选择之前可能会变为无效。
如果我的弱哈希映射直觉是正确的,那么这是否意味着映射将在某个时间点被更改以脱离其原始状态?
例如:
假设我有一个弱哈希映射,其键为{1,2,3,4,5},所有键的值均为1。现在假设您有一个生成[1:10]数字的随机数生成器。每次获取数字时,它会检查它是否是映射中的键,并给予该键临时强引用。因此,通过这种设置,您将拥有一些具有强引用并因此留在内存中的键,但您也有一些键在被选择之前可能会变为无效。
如果我的弱哈希映射直觉是正确的,那么这是否意味着映射将在某个时间点被更改以脱离其原始状态?
WeakHashMap
被用于缓存关于其键使用的对象的元数据或计算数据。当这些对象无法再被访问(例如,因为使用它们的代码已经完成),那么这些元数据也就不再需要,并且可以在这些对象被垃圾回收时自动丢弃。 - VeeArr