本文重点
在前面的课程中我们介绍了六个垃圾回收器,分别是新生代的三个以及老年代的三个,本文我们将介绍一个垃圾回收器,它既可以用于新生代又可以用于老年代,这个垃圾回收器就是G1。
G1垃圾回收器的特点
G1是一种服务器端的并发收集垃圾回收器,应用在多处理器和大容量内存环境中,在实现吞吐量的同时(比PO的吞吐量差一些),压缩空闲空间不会延长GC的暂停时间,尽可能地满足垃圾收集暂停时间的要求,它具有预测功能,可以让开发人员根据实际经验设置停顿时间。适用于不需要实现很高的吞吐量、并且需要很快响应时间的场景。
G1的优点
G1能够充分利用多CPU,多核环境硬件优势,尽量缩短STW,可以人为地设置停顿时间。
G1整体上采用标记-整理算法,局部通过复制算法(新生代),针对于老年代,将存活对象从一个区域复制到另外一个区域,这就意味着,G1完成了堆的压缩,至少是部分堆的压缩,这样就不会有CMS内存碎片的问题。
G1下的内存组成
新生代和老年代的比例是不固定的,默认为5%到60%,这个G1会进行自动的调整,比如G1在新生代的垃圾回收时间比较长,那么它可能就会自动调小新生代所占空间的比例。
如上所示,之前我们介绍的六种垃圾回收器会将JVM的堆内存分为新生代和老年代(物理上就是这么分的),而现在不是了,G1物理上不分新生代和老年代,G1