设置垃圾回收器

java -XX:+PrintFlagsFinal
可以看到1.8默认的是 UseParallelGC
ParallelGC 默认的是 Parallel Scavenge(新生代)+ Parallel Old(老年代)
在JVM中是+XX配置实现的搭配组合:
UseSerialGC 表示 “Serial” + "Serial Old"组合
UseParNewGC 表示 “ParNew” + “Serial Old”
UseConcMarkSweepGC 表示 “ParNew” + “CMS”. 组合,“CMS” 是针对旧生代使用最多的
UseParallelGC 表示 “Parallel Scavenge” + "Parallel Old"组合
UseParallelOldGC 表示 “Parallel Scavenge” + "Parallel Old"组合
在实践中使用UseConcMarkSweepGC 表示 “ParNew” + “CMS” 的组合是经常使用的

### 如何在 JDK 中设置和配置不同的垃圾回收器选项 #### 设置垃圾回收器的一般方法 对于 Java 应用程序来说,可以通过 JVM 参数来选择特定的垃圾回收器。这些参数通常是在启动应用程序时通过命令行传递给 `java` 命令。 例如,在 JDK 8 中,默认垃圾回收器是 Parallel Collector[^1]。要切换到其他类型的垃圾回收器,比如 CMS 或 G1,则需使用相应的标志: - 使用 CMS 收集器:`-XX:+UseConcMarkSweepGC` - 使用 G1 收集器:`-XX:+UseG1GC` ```bash java -XX:+UseG1GC MyApp ``` 这段代码展示了如何指定 G1 Garbage Collector 来运行名为 `MyApp` 的应用程序。 #### 配置 Z Garbage Collector (ZGC) 自 JDK 11 起引入了实验性的 Z Garbage Collector(ZGC),它旨在实现极低延迟的同时处理非常大的堆大小。启用 ZGC 可以这样操作: ```bash java -Xlog:gc -XX:+UnlockExperimentalVMOptions -XX:+UseZGC MyApp ``` 这里 `-Xlog:gc` 启用了详细的 GC 日志记录功能以便于调试与性能优化;而 `-XX:+UnlockExperimentalVMOptions` 和 `-XX:+UseZGC` 则用于解锁并激活 ZGC。 #### 控制 GC 发生频率 除了选择具体的垃圾回收算法外,还可以调整其行为特性之一就是控制发生频率。这可通过设置 `-XX:ZCollectionInterval=<seconds>` 参数完成,其中 `<seconds>` 表示两次连续 GC 执行间的期望时间间隔(秒数)。需要注意的是减少这个值虽然可以使每次 GC 更加及时但也可能导致更高的 CPU 开销[^4]。 ```bash java -XX:ZCollectionInterval=5 MyApp ``` 上述命令使得每五秒钟至少触发一次完整的垃圾收集过程。 #### 自定义垃圾回收策略 根据不同应用场景的需求,可能还需要进一步微调各个阶段的行为模式。例如,在某些情况下希望降低新生代对象晋升老年代的速度,就可以增加年轻代的空间比例或者改变分配担保阈值等措施。 ```bash java -Xms2g -Xmx2g -XX:NewRatio=2 -XX:+UseParallelGC MyApp ``` 这条指令设置了初始堆大小 (`-Xms`) 和最大堆大小 (`-Xmx`) 均为 2GB ,并将新旧两代的比例设为 1:2 (即新生代占总内存容量的三分之一),最后指定了采用并发标记清除型收集方式。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值