gpt4 book ai didi

java - GC 会收集由 SoftReference 和 WeakReference 引用的对象吗?

转载 作者:行者123 更新时间:2023-11-30 06:37:12 24 4
gpt4 key购买 nike

我有一个从 Map 到 SoftReferences 的缓存。当它们被添加时,它们会被放入另一个队列中,通过 gzip 或类似的方式进行延迟压缩。我的想法是:我想对压缩队列中的对象进行弱引用,这样当压缩器任务到达对象时,如果它已经消失,我们就不需要费心压缩它了——而且压缩器的队列也不会”不要让原本会被 GC 处理的对象保持 Activity 状态。

那么如果只有一个 SoftReference 和一个 WeakReference,SoftReference 的语义是否仍然适用?

最佳答案

是的,SoftReferences 的语义仍然适用:SoftReferences 比 WeakReferences 更强大。

对于 GC,WeakReferences 基本上被视为不存在。因此,只有弱可达性的对象可能会立即被 GC 处理。但是,仅当需要满足内存需求时,才考虑将 SoftReferences 作为最强类型访问的对象用于 GC。

所以如果同时存在软引用和弱引用,则应用 SoftReference 的语义。

Weak reference objects, which do not prevent their referents from being made finalizable, finalized, and then reclaimed.

http://download.oracle.com/javase/6/docs/api/java/lang/ref/WeakReference.html

Soft reference objects, which are cleared at the discretion of the garbage collector in response to memory demand. Soft references are most often used to implement memory-sensitive caches.

http://download.oracle.com/javase/6/docs/api/java/lang/ref/SoftReference.html

关于java - GC 会收集由 SoftReference 和 WeakReference 引用的对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3851915/

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