Java中四种引用有什么区别?


一、Java中四种引用分别是什么?

Java中四种引用分别是:

  • 强引用:默认引用,使用后不会被垃圾回收器回收(如果内存不足,则直接报错OOM)。例子代码为String[] arr = new String[]{"a","b"};
  • 弱引用:如果一个对象只有弱引用,那么无论内存充足与否,都会被垃圾回收器回收。例子代码为WeakReference<String[]> weakReference = new WeakRerence<String []>(new String[]{"a","b"});
  • 软引用:如果一个对象只有软引用,那么当内存不足时才会被垃圾回收器回收(内存充足时不会回收,所以是最大可能性地保证不被回收)。例子代码为SoftReference<String[]> softReference = new SoftReference<String[]>(new String[]{"a","b"});
  • 虚引用:只是一个引用,并没有具体实现,如果一个对象只有虚引用,那么就跟没有引用一样,在任何时候都可能被垃圾回收器回收(虚引用主要用来跟踪对象被垃圾回收的活动)

对于弱引用的例子,可以参考文章《ThreadLocal是什么?实现原理呢?》

二、Java中四种引用有什么区别?

生命周期 OOM前被清理 GC前被潜力
强引用 最长
软引用 次于强引用
弱引用 次于软引用
虚引用 次于弱引用

文章作者: GaryLee
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 GaryLee !
  目录