java 若引用_Java怎么实现弱引用

String str2 = new String("hello");

ReferenceQueue rQueue = new ReferenceQueue();

java.lang.ref.WeakReference wf = new java.lang.ref.WeakReference(str2, rQueue);

java用这样的方式创32313133353236313431303231363533e78988e69d8331333365653237建弱引用,一般和引用队列一起使用,这样当这个引用对象被垃圾回收器打描标记为垃圾的时候,它会自动加入引用队列,方便你自己在合适的时候清理。这个代码其实"hello"对象同时具备强引用和弱引用,后面引用队列的处理就不多说了,有兴趣的可以去网上找一下相关内容。

弱引用即使和一个变量关联,也有可能被回收掉。那么弱引用用在什么场合呢?

一般是占用大量内容的对象,而且被回收后又能很快创建。比如一个用户资产管理的软件,关联到用户信息(很多数据)的引用可以置为弱引用,这样当用户长时间不触发应用时,清理掉这块内存用在其它地方。再比如jdk里的WeakHashMap。还有一种情况,比如你想写一个 Java 程序,观察某对象什么时候会被垃圾收集的执行绪清除,你必须要用一个 reference记住此对象,以便随时观察,但是却因此造成此对象的 reference 数目一直无法为零,使得对象无法被清除。这种时候可以用弱引用,像下面这样:

[java] view plain copy

A obj = new A();

WeakReference wr = new WeakReference(obj);

obj = null;

//等待一段时间,obj对象就会被垃圾回收

...

if (wr.get()==null) {

System.out.println("obj 已经被清除了 ");

} else {

System.out.println("obj 尚未被清除,其信息是 " obj.toString());

}

...

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值