美文网首页
GC垃圾回收器类型介绍

GC垃圾回收器类型介绍

作者: Gino_4bd4 | 来源:发表于2021-03-10 11:13 被阅读0次

    java中垃圾的定义

    当一个对象没有被任何引用指向 或 对象存在循环引用(没有被根部引用),即这个对象会被视作垃圾。


    image.png

    java垃圾回收机制

    自动内存回收

    编程相对简单,系统不易出错
    但是性能会有一定的影响

    如何定位垃圾

    引用计数(ReferenceCount)(单个对象):引用的增加和减少都被记录,而引用为0的时候,就认为是垃圾
    根可达算法(java RootSearching)(多个对象):以根为起点顺藤摸瓜,能摸到的都不是垃圾。

    Java中那些被认为是根呢?

                  JVMstack:JVM栈里面的(因为栈里面的东西由操作系统自动回收,所有栈里面还有的对象认为是存活的对象)
    
        native method stack:本地方法栈里面的
    
        runtime constant pool:常量池里面的
    
        static:静态的引用
    
        class:加载到内存中的类(类会在new、getstatic、putstatic、invokestatic时加载到内存中,即new类、获取和设置静态变量、调用静态方法时被加载,加载之后将不会被自动回收,也不再重新加载)
    

    常见的垃圾回收算法

    1. 标记清除(mark sweep) - 位置不连续 产生碎片 效率偏低(两遍扫描)


      image.png
      image.png
    2. 拷贝算法 (copying) - 没有碎片,浪费空间


      image.png
      image.png
    1. 标记压缩(mark compact) - 没有碎片,效率偏低(两遍扫描,指针需要调整)


      image.png
    image.png

    相关文章

      网友评论

          本文标题:GC垃圾回收器类型介绍

          本文链接:https://www.haomeiwen.com/subject/nmqwqltx.html