• jvm垃圾回收机制


    一:是否为垃圾

    1,判断为垃圾的标准

      当没有被任何对象引用的情况下

    2.判断是垃圾的算法

      引用计数算法

      可达性算法

    3.引用计数算法

      

      

      举例:

      父类有一个对子类的引用,子类又引用了父类

    4.可达性算法

      

      

    二:垃圾回收算法

    1.标记-清除算法【remark-weep】

      

      图示:

      

       缺点:

      标记清楚不需要对象的移动,造成不连续的碎片化。当程序运行,需要分配较大的空间时,没有足够大的连续空间。会触发另一次GC

    2.复制算法【copying】

      

       适用:

      适用于对象存活率低的场景,例如年轻代

      优点:

      

    3.标记整理算法【compacting】

      

       图示:

      

      优点:

      

    4.分代收集算法

      组合拳

      Minor Gc:

       发生在年轻代的gc,采用复制算法

      Full Gc:

       老年代的回收

    5.年轻代

      目的:尽快的收集掉生命周期短的对象

      

      

      minor gc的过程:

      发生一次gc,存活的对象被放到survivor中,然后清除eden区的from区

      发生第二次gc,会将eden和from存活的对象拷贝到to区,然后清除eden和from区

    6.晋升到老年代

      经历一定次数的Minor Gc的存活的对象

      年轻代放不下的对象

       新生的大对象

    7.常用的调优参数

      

    8.触发Full Gc

      

    三:年轻代常见垃圾回收器

    1.JVM运行模式

      server

      client

      区别:

      client启动较快,但是稳定之后,程序运行server更快,因为一个使用的是重量级的,对程序采用更多的优化

       

    2.垃圾回收器之间的关系

      

    3.Serial收集器

      复制算法

      

    4.ParNew收集器

      复制算法

      

    5.Parallel Scavenge

      复制算法

      

    四:老年代常见垃圾回收器

     1.Serial Old

      标记整理算法

      

    2.Parallel Old

      标记整理算法

      

    3.CMS  

      标记清除算法

      

     4.g1

      复制 + 标记整理算法

      

    五:引用

    1.软引用

      

    2.弱引用、

      

    3.需引用

      

    4.类

      

      

  • 相关阅读:
    JS 数组总结
    JS 数据类型及其判断
    CSS 优先级
    正则表达式及其使用例子
    常见的图片格式
    React 箭头函数的使用
    手动搭建 react+webpack 开发环境
    JS 函数参数及其传递
    JS 中的 this 指向问题
    JS 中函数的 length 属性
  • 原文地址:https://www.cnblogs.com/juncaoit/p/13381694.html
Copyright © 2020-2023  润新知