什么样的对象能当根节点 GC roots?

Java通过可达性分析来判断对象是否存活。
基本思想是通过一系列称为“GC roots”的对象作为起始点,可以作为根节点的是:

1、虚拟机栈(栈帧中的本地变量表)中引用的对象
2、本地方法栈中JNI(即一般说的Native方法)引用的对象
3、方法区中类静态属性引用的对象
4、方法区中常量引用的对象

作为GC Roots的节点主要在全局性的引用(例如常量或类静态属性)与执行上下文(例如栈帧中的本地变量)中。
虚拟机、本地方法栈这都是局部变量,某个方法执行完,某些局部使用的对象可以被回收。

原文地址:https://www.cnblogs.com/turbo30/p/13688186.html