大数据系列之:设置CMS垃圾收集器
大数据系列之:设置CMS垃圾收集器
-XX:+UseParNewGC
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=70
-XX:+UseCMSInitiatingOccupancyOnly
-XX:+CMSParallelRemarkEnabled
这些是 Java 虚拟机 (JVM) 的垃圾回收 (GC) 相关的参数,主要用于配置 CMS (Concurrent Mark-Sweep) 垃圾收集器。以下是每个参数的解释:
- -XX:+UseParNewGC
- 启用 ParNew 垃圾收集器,用于新生代 (Young Generation) 的垃圾回收。
它是 Serial 收集器的多线程版本,适用于多核 CPU 环境。
- 启用 ParNew 垃圾收集器,用于新生代 (Young Generation) 的垃圾回收。
- -XX:+UseConcMarkSweepGC
- 启用 CMS (Concurrent Mark-Sweep) 垃圾收集器,用于老年代 (Old Generation) 的垃圾回收。
- CMS 是一种低停顿的垃圾收集器,适合对延迟敏感的应用。
- -XX:CMSInitiatingOccupancyFraction=70
- 设置 CMS 触发垃圾回收的老年代内存占用阈值(百分比)。
这里设置为 70%,意味着当老年代内存占用达到 70% 时,CMS 会开始垃圾回收。
- 设置 CMS 触发垃圾回收的老年代内存占用阈值(百分比)。
- -XX:+UseCMSInitiatingOccupancyOnly
- 强制 JVM 仅使用 CMSInitiatingOccupancyFraction 的值来决定何时启动 CMS 垃圾回收,而不是依赖 JVM 的自动调整机制。
- 这样可以避免 JVM 动态调整触发阈值,使垃圾回收行为更可预测。
- -XX:+CMSParallelRemarkEnabled
- 启用 并行标记阶段,提高 CMS 的标记 (Remark) 阶段的效率。
- 这个阶段会暂停应用线程,并行化可以缩短停顿时间。
总结
- 这些参数组合通常用于 低延迟、高吞吐量的 Java 应用,特别是 Web 服务或实时系统,以减少 GC 停顿时间。
- CMS 是一个 并发收集器,适合老年代垃圾回收,而 ParNew 用于新生代的多线程回收。