• 欢迎来到Compiler网站,如果对网站内容感兴趣或者帮助到你,请为文章点赞,谢谢!

GC Roots

java 奔跑的蜗牛 2个月前 (04-15) 45次浏览 0个评论 扫描二维码

GC Roots包含哪些(哪些可以作为gc roots)

所谓的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 – 用于同步监视器的对象

  • Held by JVM – 由JVM为其目的从垃圾搜集器中保存的对象。可能的已知情况是:系统类加载器,JVM知道的一些重要的异常类,一些用于异常处理的预分配对象,以及在加载类的过程中的自定义类加载器。 不幸的是,JVM绝对没有为这些对象提供额外的细节。因此,由分析师决定某个Held by JVM于哪种情况。


Compiler编程笔记 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:GC Roots
喜欢 (1)
[阳光路上]
分享 (0)
发表我的评论
取消评论
表情 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址