简单可达性分析

首先有一系列 GC root 根节点。从这些根节点开始向下搜索,走过的路径成为引用链,若一个对象到 GC root 没有任何引用链,则此对象不可活。当一个对象不可活时仍可以使用 finalize 方法自救

finalize 方法是 Object 的方法,子类可以重写该方法以实现资源清理过程。当某个对象变成 GC root 不可达时,GC 会判断该对象是否重写了 finalize 方法,若没有则直接回收,若重写了则执行 finalize 方法之后重新判断该对象是否可达,若可达则对象复活,否则进行回收

可作为 GC root 的对象包括:

  1. 方法区中常量引用的对象

  2. 方法区中静态属性引用的对象

  3. 虚拟机栈中引用的对象

  4. 本地方法中引用的对象

-----------本文结束感谢您的阅读-----------
0%