java四种引用

在Java中有四种引用类型,他们是:强引用(Strong Reference),软引用(Soft Reference),弱引用(Weak Reference) 和 虚引用(Phantom Reference)。

一.四种引用类型的解释:

  • JVM会持有一般对象直到他们不再是可触及的状态。换句话说,当没有任何有效引用指向他们的时候会被垃圾回收,无效引用不会被计算在内。
  • 软引用指向的对象会在不存在任何指向他们的引用并且内存空间不足情况下被垃圾收集。大多数情况下被用来实现内存敏感的缓存。没有GC的时间限制,会在OOM发生之前清理完毕。
  • 弱引用指向的对象会在没有任何引用指向他们的时候立即被垃圾收集。如果一个对象只有弱引用的话,那么这个对象是不可触及的。这些对象会在任何时候被垃圾收集并且会在下一个GC周期里被丢弃。
  • 虚引用指向的是已经执行finalize方法,但是还没有回收内存的对象。

二.四种引用类型的比较:

类型

目的

作用

触发GC条件

实现类

强引用

普通引用类型,只要对象的引用是强引用,他们就不会被垃圾收集

普通引用

任何对象如果不是强引用都可以被垃圾收集

默认类型

软引用

在内存足够的时候,对象不会被垃圾收集

为了保证即使对象没有任何引用指向它的时候也不会被垃圾收集,防止有引用再次指向这个对象

在第一次GC后,JVM需要回收更多的空间

java.lang.ref.SoftReference

弱引用

在对象可触及的状态下不会被垃圾收集

如果对象不再被引用会被自动回收

GC后对象只有弱引用

java.lang.ref.WeakReference
java.util.WeakHashMap

虚引用

让你可以清理已经执行finalize方法,但是还没有回收内存的对象

特殊清理

finalize方法执行之后

java.lang.ref.PhantomReference

 

 

二、讲讲使用最多的软引用

软引用用的好可以使程序的运行时间大大的提高,那简直就是秒运行啊,呵呵,如果你在做图片方面的加载的话(锁屏的壁纸),没必要每次都decode,使用软引用就好了,这样你每次开锁的时候,手机的响应速度那是秒开啊。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值