zoukankan      html  css  js  c++  java
  • 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.类

      

      

  • 相关阅读:
    ATM项目分析
    Python常用模块大全
    一文了解@Conditional注解说明和使用
    Spring IOC源码分析之-刷新前的准备工作
    Spring Cloud Zuul API服务网关之请求路由
    ArrayList相关方法介绍及源码分析
    记一次序列化的JSON解析问题
    大型网站架构演化发展历程
    Spring Cloud Ribbon负载均衡
    Spring Cloud Hystrix 服务容错保护
  • 原文地址:https://www.cnblogs.com/juncaoit/p/13381694.html
Copyright © 2011-2022 走看看