JVM優(yōu)化經(jīng)驗(yàn)

應(yīng)該分為?

1.系統(tǒng)層面: 合理的 openfile數(shù) 用 -server模式 打開(kāi)limit限制

2.代碼層面的,盡量用局部變量,用小而美的對(duì)象

3. 用? jstat -gcutil 獲取 Minor GC,Full GC的平均值? 如果GC執(zhí)行時(shí)間滿足下列所有條件,就沒(méi)有必要進(jìn)行GC優(yōu)化了

Minor GC執(zhí)行非常迅速(50ms以內(nèi))

Minor GC沒(méi)有頻繁執(zhí)行(大約10s執(zhí)行一次)

Full GC執(zhí)行非常迅速(1s以內(nèi))

Full GC沒(méi)有頻繁執(zhí)行(大約10min執(zhí)行一次)


查看JVM所有參數(shù):

jinfo -flags pid


jstat -gcutil pid 200 20

這個(gè)命令意思就是每隔200ms輸出pid?的gc情況,一共輸出20次



從應(yīng)用程序啟動(dòng)到采樣時(shí)發(fā)生 Young GC 的次數(shù))和YGCT(從應(yīng)用程序啟動(dòng)到采樣時(shí) Young GC 所用的時(shí)間(秒)),計(jì)算YGCT/YGC會(huì)得出,平均每次新生代的GC耗時(shí)50ms,這是一個(gè)很小的數(shù)字,通過(guò)這個(gè)結(jié)果可以看出,我們大可不必關(guān)注新生代GC對(duì)GC性能的影響。

現(xiàn)在來(lái)看一下FGC( 從應(yīng)用程序啟動(dòng)到采樣時(shí)發(fā)生 Full GC 的次數(shù))和FGCT(從應(yīng)用程序啟動(dòng)到采樣時(shí) Full GC 所用的時(shí)間(秒)),計(jì)算FGCT/FGC會(huì)得出,平均每次老年代的GC耗時(shí)19.68s。有可能是執(zhí)行了三次Full GC,每次耗時(shí)19.68s,也有可能是有兩次只花了1s,另一次花了58s。不管是哪一種情況,GC優(yōu)化都是很有必要的。



4.? 從配置? 垃圾回收器,最大堆 最小堆, 新生代和老年代的比例? 分別壓測(cè)周內(nèi) 運(yùn)行的 情況來(lái) 選擇合適的 條件


Case 1:?-XX:+UseParallelGC -Xms1536m -Xmx1536m -XX:NewRatio=2

Case 2:?-XX:+UseParallelGC -Xms1536m -Xmx1536m -XX:NewRatio=3

Case 3:?-XX:+UseParallelGC -Xms1g -Xmx1g -XX:NewRatio=3

Case 4:?-XX:+UseParallelOldGC -Xms1536m -Xmx1536m -XX:NewRatio=2

Case 5:?-XX:+UseParallelOldGC -Xms1536m -Xmx1536m -XX:NewRatio=3

Case 6:?-XX:+UseParallelOldGC -Xms1g -Xmx1g -XX:NewRatio=3


準(zhǔn)備6臺(tái)機(jī)器, 壓測(cè)2-3天,看下那種表現(xiàn)好,就用那種 配置?


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容