zoukankan      html  css  js  c++  java
  • GC Root总结

    JVM根据GC Roots算法判定一个对象需要被回收,GC Roots一般在JVM的栈区域里产生。

    GC Roots原理

    GC Roots基本思路就是通过一系列的称为“GC Roots”的对象作为起始点, 从这些节点开始向下搜索, 搜索所走过的路径称为引用链( Reference Chain),当一个对象到 GC Roots 没有任何引用链相连( 用图论的话来 说,就是从GC Roots到这个对象不可达)时,则证明此对象是不可用的。

    GC Roots对象

    常说的GC(Garbage Collector) Roots,特指的是垃圾收集器(Garbage Collector)的对象,GC会收集那些不是GC Roots且没有被GC Roots引用的对象。

    一个对象可以属于多个root,GC Roots有以下几种:

    • Class - 由系统类加载器(system class loader)加载的对象,这些类是不能够被回收的,他们可以以静态字段的方式保存持有其它对象。我们需要注意的一点就是,通过用户自定义的类加载器加载的类,除非相应的Java.lang.Class实例以其它的某种(或多种)方式成为roots,否则它们并不是roots,.
    • Thread - 活着的线程
    • Stack Local - Java方法的local变量或参数
    • JNI Local - JNI方法的local变量或参数
    • JNI Global - 全局JNI引用
    • Monitor Used - 用于同步的监控对象
    • Held by JVM - 用于JVM特殊目的由GC保留的对象,但实际上这个与JVM的实现是有关的。可能已知的一些类型是:系统类加载器、一些JVM知道的重要的异常类、一些用于处理异常的预分配对象以及一些自定义的类加载器等。然而,JVM并没有为这些对象提供其它的信息,因此需要去确定哪些是属于"JVM持有"的了。

    参考资料:GC roots

                                                    <div class="ad-wrap" style="margin-top: 12px;">
                                                        <div id="blog-title-ad" data-traceid="blog_ali" data-tracepid="blogdown" style="">
    

                                        </div>
    

    原文地址:https://my.oschina.net/dabird/blog/1594600

查看全文
  • 相关阅读:
    Nginx编译安装及平滑升级
    alertmanager 分组,抑制, 静默
    alertmanager 邮件告警&自定义告警模板
    alertmanager 高可用
    程序运行报错UnicodeDecodeError: 'utf8' codec can't decode byte 0x89 in position 0: invalid start byte
    Postman 导入curl 、导出成curl、导出成对应语言代码
    Python 字符串操作(截取/替换/查找/分割)
    In testLogin: indirect fixture *** doesn‘t exist
    postman 传参传递二进制流文件
    开发经验01
  • 原文地址:https://www.cnblogs.com/jpfss/p/11082324.html
  • Copyright © 2011-2022 走看看