java 虚拟机 GC 学习笔记三
java 虚拟机常见 GC: G1 GC.
G1 的全称是 Garbage-First,意为垃圾优先,哪一块的垃圾最多就优先清理它。G1 GC 最主要的设计目标是:将 STW 停顿的时间和分布,变成可预期且可配置的。事实上,G1 GC 是一款软实时垃圾收集器,可以为其设置某项特定的性能指标。为了达成可预期停顿时间的指标,G1 GC 有一些独特的实现。
首先,堆不再分成年轻代和老年代,而是划分为多个(通常是 2048 个)可以存放对象的小块堆区(smaller heap regions)。每个小块,可能一会被定义成 Eden 区,一会被指定为 Survivor 区或者 Old 区。在逻辑上,所有的 Eden 区和 Survivor 区合起来就是年轻代,所有的 Old 区拼在一起那就是老年代。这样划分之后,使得 G1 不必每次都去收集整个堆空间,而是以增量的方式来进行处理: 每次只处理一部分内存块,称为此次 GC 的回收集(collection set)。每次 GC 暂停都会收集所有年轻代的内存块,但一般只包含部分老年代的内存块。G1 的另一项创新是,在并发阶段估算每个小堆块存活对象的总数。构建回收集的原则是: 垃圾最多的小块会被优先收集。这也是 G1 名称的由来。
GC--配置参数
-XX:+UseG1GC:启用 G1 GC;
-XX:G1NewSizePercent:初始年轻代占整个 Java Heap 的大小,默认值为 5%;
-XX:G1MaxNewSizePercent:最大年轻代占整个 Java Heap 的大小,默认值为 60%;
版权声明: 本文为 InfoQ 作者【风翱】的原创文章。
原文链接:【http://xie.infoq.cn/article/35e2fb9a5364196604f231013】。文章转载请联系作者。
评论