写点什么

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%; 


发布于: 刚刚阅读数: 3
用户头像

风翱

关注

还未添加个人签名 2017.11.24 加入

勇于尝试,持续成长

评论

发布
暂无评论
java 虚拟机 GC 学习笔记三