Java Reference的简单总结

本文介绍了Java中的弱引用机制,包括SoftReference、WeakReference和PhantomReference等类的使用原理及场景。通过理解这些弱引用类型,可以更好地掌握垃圾回收机制,并有效避免内存泄漏。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

来自 http://www.iteye.com/topic/334692

J   ava 2   平台中引入   java.lang.ref   包(其中包含   SoftReference     WeakReference   PhantomReference     ReferenceQueue   类)。  SoftReference     WeakReference     PhantomReference 都是弱引用,他们的强弱程度依次是  SoftReference-> WeakReference->PhantomReference   (由强到弱)。

  • SoftReference 

    软引用
    的原理是:在保持对对象的引用时保证在 
    JVM  报告内存不足情况之前将清除所有的软引用。关键之处在于,垃圾收集器在运行时可能会(也可能不会)释放软可及对象。对象是否被释放取决于垃圾收集器的算法以及垃圾收集器运行时可用的内存数量。

  • WeakReference 

    垃圾收集器运行时如果碰到了弱可及对象,将释放  WeakReference   引用的对象。然而,垃圾收集器可能要运行多次才能找到并释放弱可及对象。

  • PhantomReference 

    PhantomReference   类只能用于跟踪对被引用对象即将进行的收集。同样,它还能用于执行  pre-mortem  清除操作。 PhantomReference   必须与  ReferenceQueue   类一起使用。需要  ReferenceQueue   是因为它能够充当通知机制。当垃圾收集器确定了某个对象是虚可及对象时,  PhantomReference   对象就被放在它的  ReferenceQueue   上。将  PhantomReference   对象放在  ReferenceQueue   上也就是一个通知,表明  PhantomReference   对象引用的对象已经结束,可供收集了。这使您能够刚好在对象占用的内存被回收之前采取行动。

  • ReferenceQueue  

    当某个弱引用对象的可达性被垃圾搜集器改变或清除后或将要清除时,会被放入对应的   ReferenceQueue   中(如果存在对应的引用队列的话)。  

总结

弱引用机制是和垃圾回收机制紧密相关的,实际上就是用来和垃圾回收器交互的一个手段。目的是为了让垃圾回收器在适当的时候回收掉一些不需要的对象引用,释放内存,从而使   Java   的内存管理机制更加高效。


参考资料  
Understanding Weak References  
学习如何有效地使用  SoftReference     WeakReference    PhantomReferen   ce  

用软引用阻止内存泄漏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值