引用计数算法
<span style="font-size: inherit;">通过判断对象的</span><b style="font-size: inherit;"><font color="#f15a23">引用数量</font></b><span style="font-size: inherit;">来决定是否要回收</span><br>
<span style="font-size: inherit;"><font color="#c41230">每一个对象实例都有一个计数器,当被引用时+1,完成引用则-1</font></span><br>
<b style="font-size: inherit;"><font color="#f15a23">引用计数为0</font></b><span style="font-size: inherit;">的对象被当作垃圾回收</span><br>
可达性分析算法
<span style="font-size: inherit;">通过判断对象的</span><b style="font-size: inherit; color: rgb(241, 90, 35);">引用链</b><font color="#381e11" style="font-size: inherit;">是否可达</font><span style="font-size: inherit;">来觉得对象是否要被回收</span><br>
通过一系列的称为<b><font color="#f15a23">GC Root</font></b> 的对象作为起点
<b><font color="#0076b3">栈中的引用对象</font></b>
方法区中的常量引用对象
方法区中的静态属性引用对象
本地方法中的引用对象
活跃线程中的引用对象
从这些节点向下搜索,节点所走过的路径称为<b><font color="#f15a23">引用链</font></b>
<font color="#c41230">当一个对象没有被任何</font><b><font color="#fdb813">引用链相连</font></b>,<font color="#c41230">则证明它是不可达的,即被垃圾回收</font>