深入JVM-垃圾回收-可达性分析算法

目前关于垃圾回收这一块, 很多解释都是说引用计数。

实际上,Java在垃圾回收这里,远不是引用计数这么简单。它采用的是可达性分析算法。

首先在我们的虚拟机里,有一个GC Roots的对象,作为引用的起点,由此节点成树状分散,到达每一个对象。

从GC Roots到对象的路径被称为引用链。

如下图:

GcRoots

途中,Object 1 2 3 4拥有引用链可以到达GcRoots,也就是说他们为存活的对象,而5 6 7并没有可以到达GcRoots的引用链,则他们为可回收对象。(只是可回收,并非一定要回收,具体看下节)