java gc reference_关于java:GC是否会收集SoftReference和WeakReference引用的对象?

我有一个从Map到SoftReferences构建的缓存。 添加它们后,它们被放入另一个队列中,并通过gzip或类似方法进行延迟压缩。

我的想法是:我想对压缩队列中的对象具有WeakReferences,以便当压缩器任务到达该对象时,如果该对象已经消失,我们就不必费心压缩它-而且压缩器的队列也不需要这样做。 保持对象存活,否则将被GC处理。

因此,如果恰好有一个SoftReference和一个WeakReference,SoftReference的语义是否仍然适用?

海湾合作委员会? 我想您只是说GC,当大多数人看到GCC时,他们就会想到Gnu编译器集合。

哈哈,我是说真的。 晚了; 谢谢。

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

对于GC,基本上将WeakReferences视为不存在。因此,可能难以访问的对象只能立即被GC。但是,只有需要完全满足对内存的需求时,才可以将SoftReferences作为最强类型访问的对象用于GCing。

因此,如果同时存在软引用和弱引用,则将应用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

是的,对于拥有任意数量的软/弱引用的对象,GC几乎没有问题,直到它拥有几乎一个强引用。

您应该注意,Weak Reference总是在Soft Reference之前收集。而且Soft Reference通常用于缓存内容。

这意味着:那时,它不再需要生存,但是在将来的某个时候,也许您再次需要它,而Java将无法再次工作以实例化新对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值