java的强软弱虚引用

在了解ThreadLocal的时候看到关于引用的东西

StrongReference(强引用)
强引用是使用最普遍的引用,一般声明如:Object strongReference = new Object();如果要对强引用进行垃圾回收,需要设置强引用对象为 null ,或者让其超出对象的生命周期范围,则认为改对象不存在引用。

SoftReference(软引用)
软引用是在系统发生OOM之前才被JVM回收掉。软引用常被用来对于内存敏感的缓存。

WeakReference(弱引用)
一旦JVM执行GC,弱引用就会被回收掉。 (ps: Weak 虚弱的 ; 无力的 ; 不牢固的 ; 易损坏的 ;)

PhantomReference(虚引用)
虚引用主要作为其指向referent被回收时的一种通知机制。

四种引用类型对比

引用类型

被垃圾回收时间

用途

生存时间

强引用

从来不会

对象的一般状态

JVM 停止运行时终止

软引用

当内存不足时

对象缓存

内存不足时终止

弱引用

正常垃圾回收时

对象缓存

垃圾回收后终止

虚引用

正常垃圾回收时

跟踪对象的垃圾回收

垃圾回收后终止

 

 

Reference为引用对象的抽象基类,如下图所示:

 

 

 

上一篇:ThreadLocalMap

下一篇:Reference

posted @ 2022-02-22 15:44  昵称已被使用!!!  阅读(19)  评论(0编辑  收藏  举报