1、先看代码
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* 演示GC Roots
*/
public class Demo2_2 {
public static void main(String[] args) throws InterruptedException, IOException {
List<Object> list1 = new ArrayList<>();
list1.add("a");
list1.add("b");
System.out.println(1);
System.in.read();
list1 = null;
System.out.println(2);
System.in.read();
System.out.println("end...");
}
}
2、代码执行过程
2.1、执行代码
2.2、查看当前所有进程(jps)
2.3、生成heap转储文件
jmap -dump:live,format=b,file=文件名.bin 进程id
集合清空前的 堆内存信息
集合清空后的 堆内存信息
3、使用查看工具,查看上一步转储的heap文件
3.1、打开工具
3.2、打开转储的heap文件
找到我们关注的GC Roots
关注我们代码中有哪些可以作为GC Root对象。其他部分可以看看。
其他部分内容预览