强软弱虚4种引用

92 阅读1分钟

强引用

不会被垃圾回收

Object o = new  Object()

软引用

用于缓存 在堆内存空间不足的时候 会被垃圾回收

SoftReference<byte[]> softReference = new SoftReference<byte[]>(new byte[1024*1024]);

弱引用

垃圾回收的时候会直接回收弱引用 WeakReference m = new WeakReference<>(10);

1690182163807.jpg

虚引用

管理堆外内存 和没有是一样的,get 也get不到,垃圾回收的时候会随时回收,用于管理堆外内存。 DirectByteBuffer 在使用 直接内存(堆外内存)的时候可以给他挂一个虚引用,当虚引用被回收的时候,会放到队列中,通过队列找到并清理堆外内存

PhantomReference<Integer> p = new PhantomReference<>(10,new ReferenceQueue<>());

企业微信截图_16901822447040.png