强引用,软引用,弱引用,虚引用

it2026-04-12  4

强引用 StrongReference

例子:// 强引用 String strongReference = new String("abc");

最普遍的引用,内存不够用报错GC也不会回收

软引用SoftReference

例子:

// 软引用 String str = new String("abc");

SoftReference<String> softReference = new SoftReference<String>(str);

内存不够用就会被回收

弱引用 WeakReference

只要遭遇到GC就会被回收,如果有个强引用指向他,强引用没了,就不用管了,gc会自动回收,一般用在容器。

典型应用ThreadLocal  https://blog.csdn.net/u010191034/article/details/109224321

虚引用 PhantomReference

例子:

PhantomReference<M>phantomReference=newPhantomReference<>(newM(),QUEUE);

特点:

1 引用后获取不到,get不到

2 GC看到就灭掉 ,虚引用被回收  会有个队列专门队列收到通知,队列会收到一个值调用垃圾回收

3 给写虚拟机的人用,用于清理堆外内存,管理堆外内存

 

 

最新回复(0)