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