• 黑马JVM总结(十七)


    (1)G1_简介

    下面介绍一种Grabage one的垃圾回收器,在jdk9的时候称为默认的回收器,废除了之前的CMS垃圾回收器,它的内部也是并发的垃圾回收器

    我们可以想到堆内存过大,肯定会导致回收速度变慢,因为要涉及到对象的复制、标记,内存过大,对速度会产生影响,划分为小的区域进行管理,可以进行一些优化,标记和复制的速度

    在jdk1.8还不是默认的额需要使用参数启动:-XX:+Use1GC

    -XX:G1HeapReginSize:设置区域的大小

    -XX:MaxGCPauseMillis:默认暂停目标

    (2)G1_新生代垃圾回收

    Young Collection:新生代的垃圾回收

    Young Collection+ Concurrent Mark:新生代的垃圾收集同时执行一些并发的标记

    Mixes Collection:混合收集

    三个阶段是一个循环的过程,开始时新生代的垃圾收集,当老年代的内存超过阈值啦,那么它会在新生代垃圾回收的同时进行一个并发的标记,等这个阶段完成以后进行一个混合收集(对新生代幸存区、老年代都来进行一个大规模收集),回收结束伊甸园的内存都被释放掉会再次进入新生代的回收过程

    新生代的工作流程:第一个阶段

    内存布局:

    Grabage one的垃圾回收器将堆内存划分为一个个大小相等的区域,每个区域都可以作为伊甸园,幸存区和老年代,刚开始区域都是白色的,表示时空闲的区域,我们类加载时新创建的对象,刚开始会分配到伊甸园区域绿色的E代表伊甸园区域,当伊甸园逐渐被占满时,会进行新生代的垃圾回收,会触发一个较短时间的Stop the World

    新生代的垃圾回收把这个幸存的对象 ,已复制的算法把它放到幸存区

    在工作一段时间,当幸存区的对象比较多了,或者幸存区的的对象寿命超过一定时间(大小),会再触发新生代的垃圾回收,幸存区的对象会晋升到老年代

    如果寿命不够年龄,会拷贝到另外一个幸存区去 

    (3)G1_新生代回收+CM

    下面 Grabage one的垃圾回收器垃圾回收的第二个阶段 CM指Current Mark并发标记

    我们进行垃圾回收的过程中需要进行初始标记和并发标记,初始标记呢我要找到哪些根对象,并发标记呢是从根对象触出发顺着引用链在找到其他的一些对象,初始标记是在新生代发生是就已经标记了

    当老年代占用对空间达到阈值时进行并发标记,并发标记不会影响到用户的工作线程

     

    E是伊甸园区  S是幸存区  O为老年代占有的区

    当老年代占用总去45%的时候就并发标记了

    (4)G1_混合回收

    Grabage one的垃圾回收器垃圾回收的第三个阶段

    E是伊甸园区会根据复制算法到幸存区中,幸存区的一些对象不够寿命的复制到另一个幸存区S,符合晋升条件的对象会晋升到一个老年代中去,这些属于新生代的回收,老年代的区域经过之前的并发标记阶段,发现一些对象也没用了,老年代也是采用复制算法把老年代中幸存对象复制到新的老年代区

    为什么没有把所有的箭头划到这个O区呢?因为这个垃圾回收器会根据最大暂停时间,有选择的进行一个回收,有的时候我们的堆内存太大了老年代的垃圾回收时间可能比较长,达不到我们设置的最大暂停时间,垃圾回收器呢会从老年代里找到回收价值最高的区,挑选一部分区 进行垃圾回收,

    复制的区域少了,就能达到最大暂停的时间,如果要复制的对象没那么多,最大暂停时间也可以达到,那么它会把所有的区都进行一个复制动作,复制一方面为了保留存活对象,一方面为了整理内存减少空间碎片

    最终标记这个阶段在并发标记过程中漏掉一些对象,并发标记的同时用户线程也在工作,改变对象的垃圾和引用都会对并发标记的结果产生影响,需要暂停一下,执行最终标记 

  • 相关阅读:
    Win11新建不了文本文档?Win11右键无法新建文本文档的解决方法
    2023-9-14 数字三角形
    目标检测YOLO实战应用案例100讲-基于YOLOv5的航拍图像旋转目标检测(下)
    Unity/C# 把时间转换成时间戳的方法
    odoo 开发入门教程系列-准备一些操作(Action)?
    React笔记(六)React路由
    Golang 的锁机制
    【Python】模拟windows文件名排序
    playwright 一些方法解决cloudflare防护页的问题
    C++并发编程实战 第二版 第二章
  • 原文地址:https://blog.csdn.net/dengfengling999/article/details/133030896