龙空技术网

Java 的四种引用类型

程序那点事 167

前言:

目前姐妹们对“引用类型 java”可能比较讲究,姐妹们都想要学习一些“引用类型 java”的相关内容。那么小编也在网上搜集了一些对于“引用类型 java””的相关文章,希望兄弟们能喜欢,看官们一起来学习一下吧!

强引用

任何时候声明一个对象使用=关联的引用,都是强引用,只要该强引用存在,就不会被垃圾回收器回收掉。当内存空间不足时,也不会随意清除任何一个强引用的对象。

软引用

软引用使用 SoftReference 进行声明,和强引用不同的是,如果堆内存空间不足时,会优先回收软引用。可以用于缓存数据。

SoftReference<String[]> softBean = 	new SoftReference<String[]>(new String[]{"a", "b", "c"});
弱引用

弱引用使用 WeakReference 进行声明,和软引用的区别是,只要发生垃圾回收,弱引用就一定会被回收掉。

WeakReference <String[]> weakBean = 	new WeakReference<String[]>(new String[]{"a", "b", "c"});
虚引用

虚引用使用 PhantomReference 进行声明,虚引用和其他引用不同,需要和一个ReferenceQueue一同绑定使用。如果再回收前,发现是虚引用,会先将虚引用放到ReferenceQueue中,执行完相关 hook 方法后,进行真正的回收。其目的是监测、跟踪垃圾回收器的行为。用于回收堆外内存。

当发现是虚引用,放到ReferenceQueue中。另外一个线程,发现ReferenceQueue不为空,执行相关方法,清空堆外内存。清空堆外内存后,对虚引用进行真正的回收。

标签: #引用类型 java #java的引用类型有哪三种