Java中强、软、弱、幻象引用有何不同之处?
- 内容介绍
- 文章标签
- 相关推荐
本文共计3975个文字,预计阅读时间需要16分钟。
强引用、软引用、弱引用、幻象引用的区别:
1. 定义: - 强引用:最普通的引用类型,只要强引用存在,对象就不会被垃圾回收。 - 软引用:用于缓存或缓存池,当内存不足时,软引用对象可能会被垃圾回收器回收。 - 弱引用:弱引用对象在垃圾回收时会被优先回收,但不是必须回收。 - 幻象引用:幻象引用对象几乎不会被回收,只有在显式地调用`System.gc()`时才可能被回收。
2. 对象可达性分析: - 强引用:对象始终可达。 - 软引用:对象在内存不足时可能不可达。 - 弱引用:对象在垃圾回收时可能不可达。 - 幻象引用:对象几乎不可达。
3. Reference: - Reference:是引用队列的根类,提供了弱引用、软引用、强引用和幻象引用的实现。
4. ReferenceQueue: - ReferenceQueue:用于存储即将被回收的引用对象。
5. 显式地影响软引用的垃圾收集: - 当软引用对象被垃圾回收器回收时,它们会被添加到引用队列中,可以通过显式地处理引用队列来影响软引用的垃圾收集。
6. 诊断: - 可以通过分析引用队列和垃圾收集日志来诊断引用类型对垃圾收集的影响。
本文共计3975个文字,预计阅读时间需要16分钟。
强引用、软引用、弱引用、幻象引用的区别:
1. 定义: - 强引用:最普通的引用类型,只要强引用存在,对象就不会被垃圾回收。 - 软引用:用于缓存或缓存池,当内存不足时,软引用对象可能会被垃圾回收器回收。 - 弱引用:弱引用对象在垃圾回收时会被优先回收,但不是必须回收。 - 幻象引用:幻象引用对象几乎不会被回收,只有在显式地调用`System.gc()`时才可能被回收。
2. 对象可达性分析: - 强引用:对象始终可达。 - 软引用:对象在内存不足时可能不可达。 - 弱引用:对象在垃圾回收时可能不可达。 - 幻象引用:对象几乎不可达。
3. Reference: - Reference:是引用队列的根类,提供了弱引用、软引用、强引用和幻象引用的实现。
4. ReferenceQueue: - ReferenceQueue:用于存储即将被回收的引用对象。
5. 显式地影响软引用的垃圾收集: - 当软引用对象被垃圾回收器回收时,它们会被添加到引用队列中,可以通过显式地处理引用队列来影响软引用的垃圾收集。
6. 诊断: - 可以通过分析引用队列和垃圾收集日志来诊断引用类型对垃圾收集的影响。

