1、通过枚举根节点做可达性分析,根节点是GC Roots
2、GC Roots的对象有以下四种
2.1、虚拟机栈(栈帧中的局部变量区,也叫做局部变量表)中的引用的对象
2.2、方法区中的类静态属性引用的对象
2.3、方法区中常量引用的对象
2.4、本地方法中的JNI(Native方法)引用的对象
以上四种的直接上代码
/*** 情况4是线程的start方法*/
public class GCRootsDemo {private byte[]bytes = new byte[1024];//情况2:方法区中的类静态属性引用的对象private static SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//情况3:方法去中常量引用的对象private static final SimpleDateFormat sdf2 =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");public static void method(){//情况1:这里的t1是方法区栈帧中引用的对象, t1指向new GCRootsDemo()GCRootsDemo t1 = new GCRootsDemo();System.gc();}public static void main(String[] args) {method();}
}
原文链接地址:https://mp.csdn.net/console/editor/html/107825279