[Java] 引用类型
2015-09-12 13:59
399 查看
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"));不管内存是否足够,系统垃圾回收时必定会回收。
关于软引用和弱引用的区别可以使用下面的例子来说明。
output:
soft no gc
weakp gc
可见软引用并没有被回收,弱引用被回收了。
4)虚引用 :不能单独使用,主要是用于追踪对象被垃圾回收的状态。通过PhantomReference类和引用队列ReferenceQueue类联合使用实现
[1] http://www.admin10000.com/document/1671.html
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__线程通信02
- Spring 向页面传值以及接受页面传过来的参数的方式
- Java 创建过滤器 解析xml文件
- DI注解
- javah 找不到 'xxx' 的类文件
- Spring自定义一个拦截器类SomeInterceptor,实现HandlerInterceptor接口及其方法的实例
- [Java] 堆和栈的区别
- Spring揭秘读书笔记 八 数据访问异常体系
- Spring揭秘读书笔记 八 数据访问异常体系
- <Java Web学习初级阶段>表格实现简单的注册页面
- 关于Java中 Class.forName();
- struts自定义拦截器配置
- java中volatile相关
- volatile关键字解析
- 数字使用相应的加密策略传递一个字符串后Java实现代码
- 对IDE依赖的一些看法
- 如何使用IntelliJ IDEA 14创建基于Maven3的Java Web Project
- Spring Web MVC处理请求的流程
- javah javac 不是内部或外部命令 解决方法
- mit java open course assignment #2