码迷,mamicode.com
首页 > 编程语言 > 详细

[Java] 引用类型

时间:2015-09-12 14:39:32      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:

1)强引用 :创建一个对象并把这个对象直接赋给一个变量,eg :Person person = new Person("sunny"); 不管系统资源有么的紧张,强引用的对象都绝对不会被回收,即使他以后不会再用到。

 

2)软引用 :通过SoftReference类实现,eg : SoftReference<Person> p = new SoftReference<Person>(new Person("Rain"));,内存非常紧张的时候会被回收,其他时候不会被回收,所以在使用之前要判断是否为null从而判断他是否已经被回收了。

 

3)弱引用 :通过WeakReference类实现,eg : WeakReference<Person> p = new WeakReference<Person>(new Person("Rain"));不管内存是否足够,系统垃圾回收时必定会回收。

关于软引用和弱引用的区别可以使用下面的例子来说明。

 

import java.lang.ref.SoftReference;
import java.lang.ref.WeakReference;

SoftReference<Student> softp = new SoftReference<Student>(new Student("Rain"));
WeakReference<Student> weakp = new WeakReference<Student>(new Student("Rain"));
System.gc();
if(softp.get()==null){
    System.out.println("soft gc");
}else{
    System.out.println("soft no gc");
}
        
if(weakp.get()==null){
    System.out.println("weakp gc");
}else{
    System.out.println("weakp no gc");
}

 

output:

soft no gc
weakp gc

可见软引用并没有被回收,弱引用被回收了。

 

 

4)虚引用 :不能单独使用,主要是用于追踪对象被垃圾回收的状态。通过PhantomReference类和引用队列ReferenceQueue类联合使用实现

 

[1] http://www.admin10000.com/document/1671.html

[Java] 引用类型

标签:

原文地址:http://www.cnblogs.com/deepblueme/p/4802929.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!