垃圾收集器在JVM中如何区分堆和对象

17 阅读1分钟

1、可达性分析:

垃圾收集器从一系列称为“根”(roots)的对象开始,这些根对象通常是活跃在栈中的引用或静态变量。然后,垃圾收集器递归地访问这些根对象引用的所有其他对象。在这个过程中,垃圾收集器会标记所有可达的对象。

2、标记存活对象:

通过可达性分析,垃圾收集器能够标记出所有从根对象可达的对象。这些对象被认为是存活的,因此不应该被回收。

3、回收不可达对象:

在标记完存活对象后,垃圾收集器会识别出那些未被标记的对象,即不可达的对象。这些对象不再被任何活跃的对象引用,因此可以被视为垃圾,并释放其占用的内存空间。