【JVM】G1垃圾收集器深入分析
2019-08-16 10:32:19来源:博客园 阅读 ()
【JVM】G1垃圾收集器深入分析
一、和CMS对比
G1 | CMS | |
设计原则 | 首先收集尽可能多的垃圾(Garbage First) | 尽可能少而块地执行GC,以停顿时间为目标 |
垃圾回收时机 | 启发式算法,在老年代找出具有高收集收益的分区进行收集 | 内存耗尽(新生代)或者快耗尽(老年代) |
内存划分 | 将内存划分为一个个相等大小的内存分区(Region),每个区域都可能有四种状态:E(eden)、S(Survial)、O(old)、空闲 | 分为新生代和老年代2块连续的内存空间 |
是否产生垃圾碎片 |
将一组或多组区域(称为回收集 (CSet))中的存活对象以增量、并行的方式复制到不同的新区域来实现压缩,从而减少堆碎片 |
采用标记删除,会产生碎片 |
二、技术细节
1、G1有一个及其重要的特性:软实时(soft real-time)。所谓的实时垃圾回收,是指在要求的时间内完成垃圾回收。“软实时”则是指,用户可以指定垃圾回收时间的限时,G1会努力在这个时限内完成垃圾回收,但是G1并不担保每次都能在这个时限内完成垃圾回收。通过设定一个合理的目标,可以让达到90%以上的垃圾回收时间都在这个时限内。
2、动态调节年轻代和总堆的比例。
G1可以根据用户设置的暂停时间目标自动调整年轻代和总堆大小,暂停目标越短年轻代空间越小、总空间就越大;整个年轻代内存会在初始空间-XX:G1NewSizePercent(默认整堆5%)与最大空间-XX:G1MaxNewSizePercent(默认60%)之间动态变化,
且由参数目标暂停时间-XX:MaxGCPauseMillis(默认200ms)、需要扩缩容的大小以及分区的已记忆集合(RSet)计算得到。
当然,G1依然可以设置固定的年轻代大小(参数-XX:NewRatio、-Xmn),但同时暂停目标将失去意义。
三、垃圾回收过程
1、YGC
在Eden充满时触发,在回收之后所有之前属于Eden的区块全变成空白。然后把剩余的存活对象移动到S区。
很多情况下,S区的对象会有部分晋升到Old区,另外如果S区已满、Eden存活的对象会直接晋升到Old区,这种情况下Old的空间就会涨
这个过程会对年轻代的对象有一个短暂的停顿
2、并发标记阶段
G1并发标记周期可以分成几个阶段、其中有些需要暂停应用线程。有些是后台并行处理,不需要暂停应用
- 初始标记。需要暂停应用线程这个阶段会暂停所有应用线程。部分原因是这个过程会执行一次YGC
- 并发扫描。后台线程并行处理,不会暂停应用
- 并发标记。在root扫描完成后,G1进入了一个并发标记阶段。这个阶段也是完全后台进行的
- 并发标记阶段是可以被打断的,比如这个过程中发生了YGC就会。这个阶段之后会有一个二次标记阶段和清理阶段。这两个阶段同样会暂停应用线程,但时间很短。接下来还有额外的一次并发清理阶段
3、混合GC
接下来G1执行一系列的混合GC。这个时期因为会同时进行YGC和清理上面已标记为X的区域,所以称之为混合阶段。
每次混合GC只是清理一部分的O区内存,整个GC会一直持续到几乎所有的标记区域垃圾对象都被回收,这个阶段完了之后G1会重新回到正常的YGC阶段。周期性的,当O区内存占用达到一定数量之后G1又会开启一次新的并行GC阶段.
4、FullGC
如果对象内存分配速度过快,mixed gc来不及回收,导致老年代被填满,就会触发 一次full gc,G1的full gc算法就是单线程执行的serial old gc,会导致异常长时间的暂停时间,需要进行不断的调优,尽可能的避免full gc.
原文链接:https://www.cnblogs.com/wangzhongqiu/p/11197061.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- JVM常见面试题解析 2020-06-11
- 【JVM故事】了解JVM的结构,好在面试时吹牛 2020-06-06
- 京东面试,被面试官按头问JVM,绝望 2020-06-05
- JVM系列之.JVM内存模型如何正确运用操作?本文详解 2020-06-04
- JDK8的JVM内存模型小结 2020-06-03
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash