如何解决与GC相关的问题

一般来讲,具体问题具体分析,见招拆招,遇河架桥。要相信问题总没办法多。

新生代提升过快问题:

(1)如果频率太快的话,说明空间不足,首先可以尝试调大新生代空间和晋升阈值。

(2)如果内存有限,可以

设置 CMS 垃圾收集在老年代占比达到多少时启动来减少问题发生频率(越早启动问题发生频率越低,但是会降低

吞吐量,具体得多调整几次找到平衡点),参数如下:如果没有第二个参数,会随着 JVM 动态调节 CMS 启动时间

-XX:CMSInitiatingOccupancyFraction=68 (默认是 68)

-XX:+UseCMSInitiatingOccupancyOnly

老年代碎片严重问题:

(1)如果频率太快或者 Full GC 后空间释放不多的话,说明空间不足,首先可以尝试调大

老年代空间。

(2)如果内存不足,可以设置进行 n 次 CMS 后进行一次压缩式 Full GC,参数如下:

-XX:+UseCMSCompactAtFullCollection:允许在 Full GC 时,启用压缩式 GC

-XX:CMSFullGCBeforeCompaction=n 在进行 n 次,CMS 后,进行一次压缩的 Full GC,用以减少 CMS 产生的碎片。

点击此处
隐藏目录