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。
未完待续
网友评论