miller
发布于

JVM成神路之GC分区篇 G1 GC ZGC

原文

JVM系列专栏


作者其他专栏 https://juejin.cn/user/862486453028888/columns


 在《分代篇》中谈到:CMS收集器是JVM中开辟并发收集的里程碑,而本次的主角G1则是开创GC分区回收新时代的里程碑。在G1之前,所有的收集器都是按部就班的执行“物理+逻辑分代”的收集原则,而在G1收集器中,开始正式将堆空间划分为“物理分区不分代”的内存结构,从此拉开了JVM分区回收的序幕。

    G1全称为Garbage-First Garbage Collector(垃圾优先收集器),该款收集器在JDK1.7时被引入Java,在1.7之后,我们可以通过参数-XX:+UseG1GC装配它。G1是一款专门针对于拥有多核处理器和大内存的机器的收集器,在满足了GC响应时间的延迟可控的情况下,也会尽可能提高的程序的吞吐量,官方推出该款收集器的目的在于:打算使用G1替换CMS收集器,并且让G1担当起全功能收集器的重任和期望,成为JVM中的第一款能够驾驭一切的全功能垃圾收集器。

G1收集器具备如下特性:

①与CMS收集器一样,能够与用户线程同时执行,完成并发收集。
②GC过程会有整理内存的过程,不会产生内存碎片,并且整理空闲内存速度更快。
③GC发生时,停顿时间可控,可以让程序更大程度上追求低延迟。
④追求低延迟的同时,尽可能会保证高吞吐量。
⑤对于堆的未使用内存可以返还给操作系统。

在内存较小的堆空间情况下,CMS的表现会优于G1收集器,平衡点在6~8GB左右。

后续原文: https://juejin.cn/post/7080030329922125854

浏览 (971)
点赞
收藏
评论