更新時間:2021-08-04 來源:黑馬程序員 瀏覽量:
一般來講,具體問題具體分析,見招拆招,遇河架橋。要相信問題總沒辦法多。
新生代提升過快問題:
(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 產生的碎片。