GC管理的只要区域是Java堆,一般情况下只针对堆进行垃圾回收。方法区、栈和本地方法区不被 GC 所管理,因而选择这些区域内的对象作为 GC roots,被GC roots 引用的对象不被 GC 回收。
根搜索算法是JVM用来判断对象是否存活的算法,此算法基本思路为通过一系列的“GC Roots”对象作为起始点,从这些节点往下搜索,当一个对象和 GC Roots 不可达时,则该对象是无用的,可被回收的。
1、虚拟机栈(栈帧中的本地变量表)中引用的对象;
2、方法区中的类静态属性引用的对象;
3、方法区中常量引用的对象;
4、本地方法栈中 JNI(即一般说的 Native 方法)中引用的对象
Was this helpful?
0 / 0