G1垃圾回收器
G1代表Garbage First,优先回收垃圾较多的区域以达到暂停时间短的目标。将堆内存划分为多个大小不等的Region,每个Region可以独立作为伊甸园、幸存区、老年代。
使用标记-整理算法,进行空间整合,没有内存空间碎片。
可预测垃圾回收的停顿时间,建立可预测的停顿时间模型。
CMS垃圾回收器
CMS代表Mostly Concurrent Mark and Sweep,即并发标记清除垃圾收集器。是一种老年代的收集器,可以配合新生代的Serial和ParNew收集器一起使用。
使用标记-清除算法,容易产生内存碎片。
以最小的停顿时间为目标进行垃圾回收,但无法处理浮动垃圾,并发收集会造成内存碎片过多。
G1与CMS的区别
使用范围:G1收集范围包括老年代和新生代,而CMS只是老年代的收集器。
垃圾碎片:G1使用标记-整理算法,没有内存碎片;CMS使用标记-清除算法,容易产生内存碎片。
垃圾回收过程:G1有初始标记、并发标记、最终标记、筛选回收四个阶段;CMS有初始标记、并发标记、重新标记、并发清理四个阶段。
浮动垃圾:G1没有浮动垃圾,CMS在并发清除阶段会产生浮动垃圾。