java引用类型的作用_java 引用类型及作用

java 引用类型

0. 引言

Java 中一共有 4 种类型的引用 : StrongReference、 SoftReference、 WeakReference 以及 PhantomReference ,

这 4 种类型的引用与 GC 有着密切的关系.

1. 强引用 (StrongReference)

普通的引用做法,如:

String str = "hello";

只要引用存在就不会被回收,除非手动置为null,或者超出范围,gc才会回收

2. 软引用 (SoftReference)

当JVM虚拟机内存不足时,会回收软引用对象.这样做的好处是,保证java抛出OutOfMemory异常前,把弱引用对象置为null,

用于一些资源的缓存,实现Cache功能.如:

A obj = new A();

SoftReference sr = new SoftReference(obj);

//引用时

if(sr!=null){

obj = sr.get();

}else{

obj = new A();

sr = new SoftReference(obj);

}

垃圾收集器在运行时可能会(也可能不会)释放软可及对象.对象是否被释放取决

于垃圾收集器的算法以及垃圾收集器运行时可用的内存数量.

3. 弱引用 (WeakReference)

和软引用 大同小异, SoftReference和WeakReference的区别是:一旦gc发现对象是WeakReference可达就会把它放到ReferenceQueue中,然后等下次gc时回收它;当对象是SoftReference可达时,gc可能会向操作系统申请更多内存,而不是直接回收它,当实在没辙了才回收它。像cache系统,最适合用SoftReference。让gc来替我们决定什么时候回收对象以及回收哪些对象。

4. 虚引用 (PhantomRefrence)

用得较少,建立虚引用之后通过get方法返回结果始终为null,对ReferenceQueue软引用和弱引用可以有可无,但是虚引用必须有

虚引用的唯一用处是跟踪 referent 何时被 enqueue 到 ReferenceQueue 中

5. 比较

四种引用的强弱关系按上面顺序排下来:强 > 软 > 弱 > 虚.对于对象是属于哪种可及的对象,由他的最强的引用决定

6. 小结

一般的应用程序不会涉及到 Reference 编程, 但是了解这些知识会对理解 GC 的工作原理以及性能调优有一定帮助, 在实现一些基础性设施比如缓存时也可能会用到

原文:http://www.cnblogs.com/aiguozhe/p/3819760.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值