当前位置: 代码迷 >> 综合 >> JVM垃圾回收的时候,如何确定回收垃圾?是否知道什么是GC Roots?
  详细解决方案

JVM垃圾回收的时候,如何确定回收垃圾?是否知道什么是GC Roots?

热度:80   发布时间:2024-02-07 03:16:33.0

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