您的位置:首页 > 编程语言 > Java开发

Java引用类型(总结)

2012-03-02 15:38 190 查看
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 对象中,从而达到跟踪对象垃圾回收的作用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: