JVM 垃圾回收 - guguoyi/WorkLine GitHub Wiki

  • GC Roots
    1. 虚拟机栈中引用的对象
    2. 方法区中类静态变量引用的对象
    3. 方法区中常量引用的对象
    4. 本地方法栈中JNI引用的对象
  • 什么样的对象会被回收? 对象到GC Roots不可达时认为该对象没有任何引用可以回收,但一个对象的回收至少要标记两次。
>  Step 1: 分析对象是否可回收(GC Roots对象不可达进行第一次筛选 ----> 实现Finalize()方法, 并且该方法没有被执行)<br/>
>                Yes : 该对象进入F-Queue等待Finalizer线程执行回收<br/>
>                      Step 2: 在回收之前进行第二次验证<br/>
>                               yes: 执行该对象的Finalize()方法<br/>
>                               No : 移出F-Queue队列<br/>```
⚠️ **GitHub.com Fallback** ⚠️