zoukankan      html  css  js  c++  java
  • jvm回收机制

    jvm堆分区回收机制

    jvm采用分代回收 标记清除机制

    jvm分区

    大部分的对象生命周期非常短,所以堆内存分为新生代和老年代,

    新生代分为Eden区和两个survivor区s0 s1

    新生代GC-YGC

    新生代内存不足触发ygc,将Eden区的存活对象复制到s0区,

    下一ygc 将同时回收Eden和s0区的对象,将存活对象复制到s1区,同时清空Eden和s0

    每经过一次ygc,存活的对象年龄+1,达到年龄阈值的对象被复制进老年代中

    或者survivor中的内存不足时将有部分对象进入老年代

    对象进入老年代中的条件

    1. 大对象直接分配到老年代中

    2. ygc时 survivor中不足以存放对象

    3. ygc时存活对象年龄达到了设定阈值

    4. survivor中相同年龄的对象占到一半,大于此年龄的对象将进入老年代

    触发FGC的条件

    FGC会同时清理新生代和老年代

    1. 晋升到老年代的对象超过老年代的剩余空间
    2. 老年代的使用率达到了使用阈值
    3. 空间分配担保 ygc 老年代空间不够对象晋升至老年代使用
    4. Metaspace在空间不足是进行扩容如果不足,扩容到阈值触发FGC
    5. 主动调用System.gc()

    G1 收集器

    相比于cms收集器 ,G1收集器可用同时作用于新生代和老年代,G1堆内存在传统分区的基础上将内存进一步分为多个分区

    每次触发gc会优先清理回收价值比较高的分区,可以有效减少gc时间

    参考原文 https://mp.weixin.qq.com/s/P8s3kuceBNovUP5adXpFCQ

  • 相关阅读:
    .NET 动态向Word文档添加数据
    .NET FileUpLoad上传文件
    Jquery 客户端生成验证码
    ASP.NET MVC 5 基本构成
    .NET 发布网站步骤
    Jquery 选择器大全
    .NET 知识整理笔记
    .NET 三层架构
    C#知识整理笔记
    .NET MD5加密解密代码
  • 原文地址:https://www.cnblogs.com/cu-later/p/14616514.html
Copyright © 2011-2022 走看看