1. 开启 CMS
-XX:+UseConcMarkSweepGC, 采用 CMS 垃圾收集器
2. 回收阈值
-XX:CMSInitiatingOccupancyFraction 老年代空间使用率到达该阈值时触发 CMS 垃圾收集, 默认为 92
-XX:+UseCMSInitiatingOccupancyOnly 开启每次都按 CMSInitiatingOccupancyFraction 设置的阈值触发 CMS 垃圾回收.
默认情况下, 没有开启 UseCMSInitiatingOccupancyOnly, JVM 仅在第一次到达 CMSInitiatingOccupancyFraction 设置的阈值触发 CMS 垃圾收集后, JVM 会根据实际情况自动调整触发的阈值.
3. 压缩频率
-XX:CMSFullGCsBeforeCompaction 压缩前的 full gc 次数, 默认为 0
默认情况下, 每次触发 full gc 之后都要进行空间压缩.
减少压缩频率能缩短 full gc 的时间, 但是由于空间碎片的问题, full gc 的次数会增加.