zoukankan      html  css  js  c++  java
  • GC roots

    1.虚拟机栈(本地变量表)引用的对象

    2.方法区静态属性引用的对象
    3.方法区常量引用的对象
    4.本地方法栈JNI(一般指naive方法)中引用的对象
     

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

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


    • 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持有"的了。
  • 相关阅读:
    Java连接操作redis
    redis 6.0.x简介和安装
    设计模式之代理模式(proxy)
    设计模式之组合模式(composize)
    Linux Shell脚本调试方法
    linuxcfg.sh
    反向代理和正向代理区别
    WAF与IPS的区别总结
    【LemonCK】jQuery的基本使用
    【LemonCK】CSS盒子塌陷问题
  • 原文地址:https://www.cnblogs.com/zhuyeshen/p/12576148.html
Copyright © 2011-2022 走看看