1.四个特点:
- 并行与并发
G1能够充分利用多CPU、多核环境下的硬件优势,使用多个CPU来缩短Stop-The-World停顿时间 - 分代收集
与其他收集器一样,分代概念在G1中依然得以保留。虽然G1可以不需要其他收集器配合就能独立管理整个GC堆,但它能够采用不同的方式去处理新创建的对象和已经存活了一段时间、熬过多次GC的旧对象以获取更好的收集效果。 - 空间整合
G1从整体来看时基于“标记-整理”算法实现的收集器,从局部(两个Region之间)上来看时基于“复制”算法实现的,这两种算法都意味着G1运作期间不会产生内存空间碎片,收集后能够提供规整的可用内存。这种特性有利于程序长时间运行,分配大对象时不会因为无法找到连续的内存空间而提前触发下一次GC。 - 可预测的停顿
降低停顿时间是G1和CMS共同关注点,但G1除了追求低停顿外,还能建立可预测的停顿时间模型,能让使用者明确指定在一个长度为M毫秒的时间片段内,消耗在垃圾收集上的时间不得超过N毫秒,这几乎已经是实时Java 的垃圾收集器的特征了。
G1跟踪每个Region里面面的垃圾堆积的价值大小(所获得的空间大小以及回收所需时间的经验值),在后台维护一个优先列表,每次根据允许的收集时间,优先回收价值最大的Region(这也就是Garbage First名称的由来)