溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

JVM調(diào)優(yōu)經(jīng)驗(不一定準(zhǔn)確)

發(fā)布時間:2020-05-30 16:27:19 來源:網(wǎng)絡(luò) 閱讀:455 作者:愛與夢想 欄目:軟件技術(shù)

1. 整體思路:

  1. Young GC發(fā)生的頻率比較頻繁是正?,F(xiàn)象,但盡可能讓他的單次執(zhí)行時間少點(diǎn)

  2. Full GC發(fā)生的頻率不應(yīng)該太高


2. 使用的監(jiān)控命令:

jps -m -l? ?列出JVM中運(yùn)行的進(jìn)程狀態(tài)信息(這里可以獲取某個進(jìn)程的pid, 供后續(xù)命令使用)

jstat -gcutil pid 10s 3? ?對堆內(nèi)存的使用情況、gc信息等進(jìn)行實時的命令行統(tǒng)計

JVM調(diào)優(yōu)經(jīng)驗(不一定準(zhǔn)確)


3. 具體設(shè)置參數(shù)如下:

  1. -Xms、-Xmx

    這兩個參數(shù)一定要設(shè)置,而且必須設(shè)置成相等,不能使用默認(rèn)值。如果不設(shè)置,可能會出現(xiàn)頻繁Full GC、內(nèi)存泄露。

    設(shè)置成相等,主要是為了避免每次GC之后重新給堆內(nèi)存分配大小。

    另外,這倆值不要設(shè)置的太大。雖然建議堆的最大值設(shè)置為可用內(nèi)存最大值的80%(使用命令free或cat /proc/meminfo查看,實際可用物理內(nèi)存=free+buffer+cache),但是當(dāng)設(shè)置了80%之后,服務(wù)器的內(nèi)存占用一般都達(dá)到了90%以上,所以可以適當(dāng)降低一點(diǎn)。

  2. -Xmn、-XX:SurvivorRatio

    最好不要用-XX:NewRatio,因為同CMS GC一起使用時會失效。

    如果不設(shè)置此值,不設(shè)置CMS GC,那么年輕代和年老代比值大約是1:2

    如果不設(shè)置此值,設(shè)置了CMS GC,那么年輕代會變的很小,年老大占很大

    如果Young Generation大小分配不合理或空間比較小,這個時候?qū)е聦ο蠛苋菀走M(jìn)入Old Generation中,比如,如果s0和s1太小,gc之后無法裝下存活的對象,那么就會直接進(jìn)入年老代中,而Old Generation中回收具體對象的時候速度是遠(yuǎn)遠(yuǎn)低于Young Generation回收速度。

    要考慮年老代和新生代的比例(sun官方建議-Xmn為整個堆的3/8),考慮Eden和survives的比例(默認(rèn)是8:1:1)

    如果不知道該設(shè)置多少,可以先按官方要求設(shè)置,如果不合適,再進(jìn)行調(diào)整。

  3. 是否使用CMS GC。

  4. 其他參數(shù),根據(jù)具體情況設(shè)置,注意,未必設(shè)置了之后就會提升性能。不同的應(yīng)用系統(tǒng),不同的電腦硬件條件,都可能不一樣。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI