JAVA 强引用>软引用>弱引用>虚引用

强引用>软引用>弱引用>虚引用 有什么区别,总结一句,就是引用对象重要性,从左到右重要性依次递减。越重要的垃圾回收时,控制越严格。

强引用:

强引用很容易理解,也是我们经常用到的方式

如:使用= 号接受对象

Object a = new A();

 其他包括 给集合对象 ,给数组添加元素,set对象成员变量等。

强引用只有在不可达时,才会被垃圾回收器回收,如果内存空间不足,则会OutOfMemoryError

软引用:

就是一个对象在垃圾回收器处理的时候,发现内存不足,就清理对象释放内存。

SoftReference ref = new SoftReference(new A());

弱引用:

只要GC就回收

WeakReference ref = new WeakReference(new A());

虚引用:

虚引用必须和引用队列 (ReferenceQueue)联合使用。当垃圾回收器准备回收一个对象时,如果发现它还有虚引用,就会在回收对象的内存之前,把这个虚引用加入到与之关联的引用队列中。

ReferenceQueue queue = new ReferenceQueue ();
PhantomReference pr = new PhantomReference (object, queue);

可用来跟踪对象被垃圾回收器回收的活动,当一个虚引用关联的对象被垃圾收集器回收之前收到一条系统通知。

在平常的项目中基本不会使用到。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值