Java引用类型(总结)

 1、强引用(strongly reachable):
>> 创建方式:使用new关键字创建
>> 示例:StringBuilder builder= new StringBuilder();
2、软引用(softly reachable):
>> 创建方式:
1)创建一个强引用对象
2)创建该对象的软引用
3)将强引用置空
4)使用软引用获取对象
>> 示例:
A a = new A();
SoftReference sr = new SoftReference(a);
a = null;
if(sr!=null)
{
    a = (A)sr.get();
}
else
{
    // else it is already be recycled, so we need to rebuild it
    a = new A();
    sr  = new SoftReference(a);
    a = sr.get();
}
3、弱引用(Weakly Reachable)
>> 创建方式:
1)创建一个强引用对象
2)创建一个引用队列
3)使用引用队列创建对象的弱引用
>> 示例:
A a = new A();
ReferenceQueue rq = new ReferenceQueue();
WeakReference wr = new WeakReference(a, rq);
a = (A) wr.get();
4、虚引用(Phantomly Reachable)
>> 创建方式:同弱引用(get方法永远返回null)
>> 示例:
A a = new A();
ReferenceQueue rq = new ReferenceQueue();
PhantomReference pr = new PhantomReference(a, rq);
a = (A) pr.get(); // forever  return null
>> 注意:
PhantomReference 是所有“弱引用”中最弱的引用类型。不同于软引用和弱引用,虚引用无法通过 get() 方法来取得目标对象的强引用从而使用目标对象,观察源码可以发现 get() 被重写为永远返回 null。
那虚引用到底有什么作用?其实虚引用主要被用来 跟踪对象被垃圾回收的状态,通过查看引用队列中是否包含对象所对应的虚引用来判断它是否 即将被垃圾回收,从而采取行动。它并不被期待用来取得目标对象的引用,而目标对象被回收前,它的引用会被放入一个 ReferenceQueue 对象中,从而达到跟踪对象垃圾回收的作用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值