Java 中可作为 GC Roots 的对象有哪几种?

GC Roots主要包括以下四种对象:

  1. 虚拟机栈(栈帧中的本地变量表)中引用的对象:虚拟机栈中保存着每个线程的方法调用和局部变量信息,当一个方法被调用时,会在虚拟机栈中创建对应的栈帧,栈帧中的本地变量表中引用的对象被视为GC Roots。
  1. 方法区中类静态属性引用的对象:类的静态属性属于类本身,它们在方法区中保存,如果静态属性引用了某个对象,那么该对象被视为GC Roots。
  2. 方法区中常量引用的对象:方法区中存储着常量池,常量池中的常量引用的对象也被视为GC Roots。
  3. 本地方法栈中JNI(Java Native Interface)引用的对象:JNI允许Java代码与本地代码(如C或C++)进行交互,本地方法栈中JNI引用的对象也作为GC Roots。

标签: java, Java面试题, Java问题合集, Java编程, Java问题精选, Java常见问题