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 对象中,从而达到跟踪对象垃圾回收的作用。
>> 创建方式:使用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 对象中,从而达到跟踪对象垃圾回收的作用。
相关文章推荐
- 黑马程序员_java中特殊的引用类型(对第十三课String类和包装类总结)
- Java数据类型总结:基本类型、引用类型
- java引用数据类型的排序总结(内置类,自定义类,容器类)
- Java基本数据类型&引用类型总结
- java基础技术知识点总结——基本数据类型、引用、常量
- java数据类型总结--基本+引用
- java基础总结三(引用类型使用格式、if语句、循环语句)
- 关于java内存泄露的总结--引用的类型:强引用,弱引用,软引用
- 黑马程序员【andriod】JAVA基础学习笔记三——JAVA的几种引用学习总结
- Java引用总结--StrongReference、SoftReference、WeakReference、PhantomReference
- 【Java笔记】引用类型的参数传值
- java 基本数据类型和引用数据类型
- JAVA中值类型和引用类型的不同?
- java :引用类型的转换  方法重载和重写  构造函数 修饰符
- Java学习笔记二十六:Java多态中的引用类型转换
- Java的基本数据类型:8种基本类型、对应的包装类、引用数据类型及与String 之间的转换。
- Java 7之基础 - 强引用、弱引用、软引用、虚引用(总结的很好)
- java基本数据类型传递与引用传递区别详解(一个大神的解析,不是我。。)
- Java对象的4种引用类型(转)
- Java 四种引用类型