GC根对象类型
关于「GC根对象」请参见概念解释:
垃圾回收器从这些区域开始扫描存活对象。比如下图中,垃圾回收器从线程栈这片区域出发,扫描到对象A和B,然后以这两个对象为起点,扫描其他对象。
不同的区域存放了不同的GC根对象,在分析过程中可能遇到的所有区域如下:
Unknown: 未知类型
System Class: 这是一个java.lang.Class对象
Jni Local: 这是一个JNI局部引用
Jni Global: 这是一个JNI全局引用
Thread Block: 这个对象被当前活跃的对象块引用
Busy Monitor: 这是一个调用了wait或者notify对象,或者它作为同步对象被用于synchronized块
Java Local: 这是一个Java局部变量,只存在于当前栈帧中
Native Stack: 这是native方法的入参
Thread: 这是一个java.lang.Thread对象
Finalizable: 这是一个等待执行finalize方法的对象
Unfinalized: 这个对象虽然有finalize方法,但是该finalize从未被调用过,也没有在finalize队列中等待被调用
Unreachable: 这是一个垃圾对象,即垃圾回收器无法触及到的对象,在下一次GC中将会被回收
Stackframe: 包含局部变量的Java栈帧
Nmethod: 这是一个JIT编译的方法