初学Java,对象的软,弱和虚引用(二十三)

25 篇文章 0 订阅

java.lang.ref包下提供了三个类SoftReference,phantomReference WeakReference,分别代表软引用,虚引用和弱引用

C#中没有这些概念

强引用,最常见的引用,程序创建一个对象,并把这个对象赋值给一个引用变量,通过该引用来实际操作对象

软引用,需要通过SoftReference类来实现,当一个对象只有一个软引用,它有可能被垃圾回收机制回收。内存空间足够时,不会被回收,不足够时将被回收

弱引用,需要通过WeakReference类来实现,当垃圾回收机制运行时,不管内存是否足够,总会回收该对象所占用的内存

虚引用,通过phantomReference 类实现,虚引用类似于完全没有引用。主要用于跟踪对象被回收的状态 ,不能单独使用,必须和引用队列(ReferenceQueue)联合使用

上面三个引用类都包含一个get方法,用于获取它们所引用的对象

引用队列由java.langl.ref.ReferenceQueue类表示,用于保存被回收后对象的引用

 

01.import java.lang.ref.WeakReference;  
02.public class TestReference   
03.{  
04.    public static void main(String[] args)   
05.    {  
06.        //创建一个字符串对象  
07.        String str = new String("Structs2 权威指南");  
08.        //创建一个弱引用,让此引用引用到"Struts2 权威指南"字符串  
09.        WeakReference wr = new WeakReference(str);  
10.        //切断str引用和"Struts2 权威指南"字符串之间的引用   
11.        str = null;  
12.        //取出弱引用所引用的对象  
13.        System.out.println(wr.get());  
14.        //强制垃圾回收  
15.        System.gc();  
16.        System.runFinalization();  
17.        ///再次取出弱引用所引用的对象  
18.        System.out.println(wr.get());  
19.    }  
20.}  


 

输出:

Struts2 权威指南


null


 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值