G1垃圾回收器简介首先我们先来简单介绍一下G1垃圾回收器:
- G1回收器:Garbage First
- 在2017成为JDK9的默认垃圾回收器
- 同时注重吞吐量和低延迟,默认的暂停目标是200ms
- 超大堆内存,将堆划分为多个大小相等的Region
- 整体上是标记整理法,但两个区域之间是复制算法
- -XX:+UseG1GC使用G1垃圾回收器(JDK9之前都不是默认回收器)
- -XX:G1HeapRegionSize=size设置Region的大小
- -XX:MaxGCPauseMillis=time设置最大的G1垃圾回收时间

文章插图
我们可以看到整个流程分为三个阶段:
- YoungCollection:新生代阶段
- YoungCollection+ConcurrentMark:新生代阶段+并发标记阶段
- MixedCollection:混合收集阶段

文章插图
我们对其进行解释:
- E就是伊甸园,S就是幸存区,O就是老年代
- 其产生的正常流程就和分代垃圾回收机制一样,但这阶段不会产生GC

文章插图
我们对其进行解释:
- 其字符含义完全相同
- 当新生代内存占满后进行Young GC时会同时进行GC Root的初始标记
- 老年代占用堆空间比例达到阈值时,进行并发标记(不会产生STW),阈值可以控制
// 阈值控制-XX:InitiatingHeapOccupancyPercent=percent (默认45%)
Mixed Collection我们首先给出该阶段的展示图:
文章插图
我们对其进行解释:
- 其字符含义完全相同
- 但该阶段会对E,S,O进行全面垃圾回收
- 其中最终标记(Remark)和拷贝存活(Evacation)都会STW(我们均会在后面解释)
- Mixed Collection可能并不会将所有老年代的数据都删除
- 它会根据你设置的最大暂停时间来进行抉择,如果时间不足以删除所有老年代数据,就会挑选部分较大的内存数据进行回收
- SerialGC(串行垃圾回收)
- 新生代内存不足时发生的垃圾收集 - minor gc
- 老年代内存不足时发生的垃圾收集 - full gc
- ParalllelGC(吞吐量优先垃圾回收)
- 新生代内存不足时发生的垃圾收集 - minor gc
- 老年代内存不足时发生的垃圾收集 - full gc
- CMS(响应时间优先垃圾回收)
- 新生代内存不足时发生的垃圾收集 - minor gc
- 老年代内存不足时优先进行标记操作同步垃圾回收,当内存完全占满后才采用full gc
- G1(Garbage First)
- 新生代内存不足时发生的垃圾收集 - minor gc
- 老年代内存不足时优先进行MixedCollection同步垃圾回收,当内存完全占满后才采用full gc
但其实这个Region并不仅仅只分为了E,S,O三个空间,此外还包括以下空间:
经验总结扩展阅读
- 黑莓q5用安装微信的方法a 用黑莓自带的印象笔记手敲的 看不懂的宝宝们在私聊我吧
- 未来两个月小宇宙爆发逆袭黑马 学习运超好的4大星座
- JVM学习笔记——内存结构篇
- 【lwip】08-ARP协议一图笔记及源码实现
- 用一台笔记本电脑如何赚钱(笔记本电脑赚钱的办法)
- 小米笔记本Pro15增强版评测_小米笔记本Pro15增强版评测表现
- 笔记本电脑CF中烟雾头怎么调(win10cf新版本烟雾保护头怎么调)
- 笔记本电脑配置高低怎么区分(笔记本电脑看什么配置判断好坏)
- 四 【单片机入门】应用层软件开发的单片机学习之路-----ESP32开发板PWM控制电机以及中断的使用
- pytorch、paddlepaddle等环境搭建 深度学习环境搭建常用网址、conda/pip命令行整理