内存结构
# 1. 如何判断对象可以回收
# 1.1 引用计数法
每多一个变量引用一个对象,这个引用计数就 +1,反之则 -1。当计数为 0 时,该对象就可以回收了。
类似于 C++ 的 shared_ptr。
但这种方法无法解决循环引用的问题。
# 1.2 可达性分析算法
Java 虚拟机中的垃圾回收器采用可达性分析来探索所有存活的对象。
它扫描 heap 中的对象,看是否能够以 GC Root 对象为起点,沿着引用链找到该对象,如果找不到,表示可以回收。
这就可以类比“提葡萄”,我们从根上提起一串葡萄,能够提起来的就是可达的对象,提不起来的就是可以回收的。
那么哪些对象可以作为 GC Root 呢?这可以通过工具 Eclipse Memory Analyzer 看到。
原视频这里看的有点晕。
# 1.3 ⭐️ 四种引用
// 这里需要看书
编辑 (opens new window)
上次更新: 2023/07/06, 03:12:41