更新時(shí)間:2021-08-04 來源:黑馬程序員 瀏覽量:
一般來講,具體問題具體分析,見招拆招,遇河架橋。要相信問題總沒辦法多。
新生代提升過快問題:
(1)如果頻率太快的話,說明空間不足,首先可以嘗試調(diào)大新生代空間和晉升閾值。
(2)如果內(nèi)存有限,可以
設(shè)置 CMS 垃圾收集在老年代占比達(dá)到多少時(shí)啟動(dòng)來減少問題發(fā)生頻率(越早啟動(dòng)問題發(fā)生頻率越低,但是會(huì)降低
吞吐量,具體得多調(diào)整幾次找到平衡點(diǎn)),參數(shù)如下:如果沒有第二個(gè)參數(shù),會(huì)隨著 JVM 動(dòng)態(tài)調(diào)節(jié) CMS 啟動(dòng)時(shí)間
-XX:CMSInitiatingOccupancyFraction=68 (默認(rèn)是 68)
-XX:+UseCMSInitiatingOccupancyOnly
老年代碎片嚴(yán)重問題:
(1)如果頻率太快或者 Full GC 后空間釋放不多的話,說明空間不足,首先可以嘗試調(diào)大
老年代空間。
(2)如果內(nèi)存不足,可以設(shè)置進(jìn)行 n 次 CMS 后進(jìn)行一次壓縮式 Full GC,參數(shù)如下:
-XX:+UseCMSCompactAtFullCollection:允許在 Full GC 時(shí),啟用壓縮式 GC
-XX:CMSFullGCBeforeCompaction=n 在進(jìn)行 n 次,CMS 后,進(jìn)行一次壓縮的 Full GC,用以減少 CMS 產(chǎn)生的碎片。