【JVM】G1收集器

G1(Garbage First) 是一款面向服务端应用的垃圾收集器,也是当今收集器技术发展的最前沿的成果之一。

特征

1. 并行与并发

G1能充分利用多CPU、多核环境的优势,缩短GC停顿时间。

2. 分代收集

分代的概念在G1中保留,虽然G1不需要其他收集器配合就能独立管理整个GC堆,但它能够采用不同的方式处理新创建的对象和已经存活了一段时间、熬过多次GC的旧对象,以获取更好的收集效果。

3. 空间整合

G1从整体上看是基于”标记-整理“算法实现的收集器,从局部上(两个Region之间)看是基于”复制“算法实现的,这意味着G1运作期间不会产生内存空间碎片,收集后能提供规整的可用内存。

4. 可预测的停顿

降低停顿时间是CMS和G1共同的关注点,但G1除了追求低停顿外,还能建立可预测的停顿时间模型:能让使用者明确指定在长度为M毫秒的时间片段内,消耗在垃圾收集上的时间不得超过N毫秒。

可预测的停顿

G1之所以能够建立可预测的时间停顿模型,是因为它可以有计划地避免在整个Java堆中进行全区域的垃圾收集。
G1跟踪各个Region里面的垃圾堆积的价值大小,在后台维护一个优先级列表,每次根据允许的收集时间,优先回收价值最大的Region。

未完待续

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容