所谓的GC roots 是垃圾搜集器特有的对象, 垃圾搜集器搜集哪些非GC root的对象并且无法通过GC roots引用直接访问的对象。
一个对象可以属于多个roots, GC roots有一下几种:
-
Class 由系统类加载器加载的类, 永远不能回收这样的类(自定义的类加载器不是root, 除非响应的实例恰好是其他java.lang.Class的类型的root)
-
Thread – 存活的线程
-
Stack Local – Java方法局部变量或者参数
-
JNI Local – JNI的局部变量或者参数
-
JNI Global – 全局JNI引用
-
Monitor Used – 用于同步监视器的对象
-