您好,登錄后才能下訂單哦!
1. 整體思路:
Young GC發(fā)生的頻率比較頻繁是正?,F(xiàn)象,但盡可能讓他的單次執(zhí)行時間少點(diǎn)
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)計
3. 具體設(shè)置參數(shù)如下:
-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)。
-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)整。
是否使用CMS GC。
其他參數(shù),根據(jù)具體情況設(shè)置,注意,未必設(shè)置了之后就會提升性能。不同的應(yīng)用系統(tǒng),不同的電腦硬件條件,都可能不一樣。
免責(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)容。