<aside> 😀 这里写文章的前言: JVM的垃圾回收机制
</aside>
Java 的对象使用的是堆空间的内存, 方法的执行是栈帧的入栈出栈, 引用和局部变量可以随着入栈出栈直接清理, 但是引用对应所在堆空间的内存则不能通过出栈的结束而回收, 因为堆空间是线程共享的, 并不确定是否有其他线程引用了这块内存, 需要 GC 机制来进行自动的清理
缺点: 两个对象出现循环引用的情况下,此时引用计数器永远不为 0,导致无法对它们进行回收
objA.instance = objB;
objB.instance = objA;
通过 GC Roots 作为起始点进行搜索,能够到达到的对象都是都是可用的,不可达的对象可被回收
GC Roots 一般包含: