一、回收流程图:

二、四个回收流程详解:

1、Young GC

  • 当Eden区用尽时开始年轻代回收过程;
  • G1的年轻代收集阶段是一个并行(多个垃圾线程)的独占式收集器;
  • 在年轻代回收期,G1 GC暂停所有应用程序线程,启动多线程执行年轻代回收;
  • 从年轻代区间移动存活对象到Survivor区间或者老年区间,也有可能是两个区间都会涉及。

2、Concurrent Marking

  • 当堆内存使用达到一定值(默认45%)时,开始老年代并发标记过程
  • 并发标记的五个阶段

初始标记阶段

标记从根节点直接可达的对象。这个阶段是STW的,并且会触发一次Young GC

根区域扫描

G1 GC扫描Survivor区“直接可达的老年代区域对象”,并标记被引用的对象。这一过程必须在young GC之前完成

并发标记
                在整个堆中进行并发标记(和应用程序并发执行),此过程可能被young GC中断。在并发标记阶段,若发现区域对象中的所有对象都是垃圾,那这个区域会被立即回收。同时,并发标记过程中,会计算每个区域的对象活性(区域中存活对象的比例)。

再次标记

由于应用程序持续进行,需要修正上一次的标记结果,是STW的

独占清理

计算各个区域的存活对象和GC回收比例,并进行排序,识别可以混合回收的区域,是STW的。

3、Mixed GC

  • 标记完成马上开始混合回收过程。
  • 混合回收的回收集包括八分之一的老年代Region,Eden区Region,Survivor区Region
  • 由于老年代中的Region默认分8次回收,G1会优先回收垃圾多的内存分段,垃圾占内存分段比例越高的,越会被先回收。
  • -XX:G1MixedGCLiveThresholdPercent阈值会决定Region是否被回收,默认为65%,意思是垃圾占内存分段比例要达到65%才会被回收。
  • -XX :G1HeapWastePercent阈值决定混合回收要不要进行8次,默认值为10%,如果发现可以回收的垃圾占堆内存的比例低于10%,则不再进行混合回收

4、Full GC

  • 如果上述方式不能正常工作,G1会停止应用程序的执行(Stop-The-World) ,使用单线程的内存回收算法进行垃圾回收
  • 无法找到可用的空闲分区或者分配巨型对象无法在老年代找到连续足够的分区的时候,G1首先会尝试扩展堆大小(堆大小还未达到-Xmx),如果扩展失败,那么发生full GC

希望我讲明白了G1 GC的过程相关推荐

  1. Java Hotspot G1 GC的一些关键技术

    前言 G1 GC,全称Garbage-First Garbage Collector,通过-XX:+UseG1GC参数来启用,作为体验版随着JDK 6u14版本面世,在JDK 7u4版本发行时被正式推 ...

  2. c linux time微秒_学习linux,看这篇1.5w多字的linux命令详解(6小时讲明白Linux)

    用心分享,共同成长 没有什么比每天进步一点点更重要了 本篇文章主要讲解了一些linux常用命令,主要讲解模式是,命令介绍.命令参数格式.命令参数.命令常用参数示例.由于linux命令较多,我还特意选了 ...

  3. Netflix正在搞的混沌工程到底是什么?终于有人讲明白了

    导读:与任何新概念一样,混沌工程时常被误解.本文会探讨混沌工程是什么以及不是什么. 作者:Casey Rosenthal, Nora Jones 来源:大数据DT(ID:hzdashuju) 在Net ...

  4. 终于有人把用户画像的流程、方法讲明白了

    导读:用户标签是个性化推荐.计算广告.金融征信等众多大数据业务应用的基础,它是原始的用户行为数据和大数据应用之间的桥梁,本文会介绍用户标签的构建方法,也就是用户画像技术. 作者:马海平 于俊 吕昕 向 ...

  5. 什么是架构?网络架构中都有什么?终于有人讲明白了

    导读:理解架构这个词的意思是十分重要的.它可能被过度使用,并且使用在各种环境中.如果缺少一致的理解,将会有交流失败的风险.那么架构这个词到底是什么意思呢? 作者:大卫·D.克拉克(David D. C ...

  6. 贯穿计算机系统所有方面的重要概念,终于有人讲明白了

    导读:我们在此强调几个贯穿计算机系统所有方面的重要概念.我们会在本文多处讨论这些概念的重要性. 作者:Randal E. Bryant,David R. O'Hallaron 来源:华章计算机(hzb ...

  7. 初学者指南:什么是算法?11行伪代码给你讲明白

    导读:本文带你熟悉一个重要的术语--算法. 作者:帕诺斯·卢里达斯(Panos Louridas) 来源:大数据DT(ID:hzdashuju) 算法(algorithm)就是一个过程,是一种特殊的过 ...

  8. 终于有人把AI、BI、大数据、数据科学讲明白了

    导读:本文概述数据.分析.商业智能.报表.大数据.数据科学.边缘分析.信息学以及人工智能和认知计算这些基本概念. 作者:格雷戈里·S. 纳尔逊(Gregory S. Nelson) 来源:大数据DT( ...

  9. 终于有人把Embedding讲明白了

    导读:如果要总结深度学习大获成功的原因,那至少有两样东西必须入选:一样当然是很"深"的神经网络模型,这也是深度学习的"深度"的由来,另一样就是Embedding ...

最新文章

  1. TIOBE Programming Community Index
  2. 1.1.2 标准化工作及相关组织
  3. DailyRollingFileAppender-设置文件大小和备份数
  4. axios获取图片显示_Vue.js+axios图片预览以及上传显示进度
  5. nodejs发送电子邮件的更新
  6. 论文阅读:Deep forest/深度森林/gcForest
  7. MOS管的源极和漏极的区别
  8. 思科路由器的介绍及实战
  9. 英文标题中哪些词不用大写
  10. 招生CRM系统|基于Springboot实现培训机构招生CRM管理系统
  11. php控制树莓派GPIO
  12. android 图片手动放大,Android图片的手动放大缩小
  13. 中介者模式 - 门面
  14. 淘宝淘金币助手,自动完成淘金币任务,蚂蚁庄园和蚂蚁森林,天猫领红包和收取能量
  15. 梯度算法之梯度上升和梯度下降
  16. PCL:RANSAC 圆拟合(二维圆 + 空间圆)
  17. STM32F103ZET6+USART+串口通信
  18. android 家谱,Desire竟垫底 Android手机家谱全面曝光
  19. 如何制作思维导图培训PPT课件?
  20. 机器人控制器编程课程-教案06-理论课总结

热门文章

  1. Android 生成签名文件、配置签名信息、打包
  2. 《那些年啊,那些事——一个程序员的奋斗史》——118
  3. 正确刷新Qt表格内容
  4. 讯飞语音输入法Android Pad版发布,是噱头还是真的实用?
  5. Android 蓝牙开发 uuid,Android蓝牙开发之 UUID
  6. ElasticSearch全文检索技术
  7. 微信扫一扫 Android 与 IOS 小区别
  8. unity编辑器拓展整理(主要是siki的视频教程)
  9. 使用vivado2019.2和petalinux 2019.2制作带无线wifi的ultra96v2的BSP软件包
  10. 基于tp5的支付宝app支付及回调