溫馨提示×

溫馨提示×

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

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

JVM參數(shù)如何優(yōu)化

發(fā)布時間:2022-10-18 16:18:21 來源:億速云 閱讀:140 作者:iii 欄目:編程語言

這篇文章主要講解了“JVM參數(shù)如何優(yōu)化”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“JVM參數(shù)如何優(yōu)化”吧!

JVM參數(shù)的優(yōu)化

適當(dāng)調(diào)整Tomcat的運行JVM參數(shù)可以提升整體性能。

JVM內(nèi)存模型

當(dāng)一個URL被訪問時,內(nèi)存申請過程如下:

A. JVM會試圖為相關(guān)Java對象在Eden中初始化一塊內(nèi)存區(qū)域

B. 當(dāng)Eden空間足夠時,內(nèi)存申請結(jié)束。否則到下一步

C. JVM試圖釋放在Eden中所有不活躍的對象(這屬于1或更高級的垃圾回收), 釋放后若Eden空間仍然不足以放入新對象,則試圖將部分Eden中活躍對象放入Survivor區(qū)

D. Survivor區(qū)被用來作為Eden及OLD的中間交換區(qū)域,當(dāng)OLD區(qū)空間足夠時,Survivor區(qū)的對象會被移到Old區(qū),否則會被保留在Survivor區(qū)

E. 當(dāng)OLD區(qū)空間不夠時,JVM會在OLD區(qū)進(jìn)行完全的垃圾收集(0級)

F. 完全垃圾收集后,若Survivor及OLD區(qū)仍然無法存放從Eden復(fù)制過來的部分對象,導(dǎo)致JVM無法在Eden區(qū)為新對象創(chuàng)建內(nèi)存區(qū)域,則出現(xiàn)”out of memory錯誤”

JVM參數(shù)

修改文件:bin/catalina.sh

JAVA_OPTS="-Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:NewRatio=2 -XX:MaxTenuringThreshold=50 -XX:+DisableExplicitGC"

參數(shù)說明:

1、  file.encoding 默認(rèn)文件編碼

2、  -Xmx1024m  設(shè)置JVM最大可用內(nèi)存為1024MB

3、  -Xms1024m  設(shè)置JVM最小內(nèi)存為1024m。此值可以設(shè)置與-Xmx相同,以避免每次垃圾回收完成后JVM重新分配內(nèi)存。

4、  -XX:NewSize  設(shè)置年輕代大小

5、  XX:MaxNewSize 設(shè)置最大的年輕代大小

6、  -XX:PermSize  設(shè)置永久代大小

7、  -XX:MaxPermSize 設(shè)置最大永久代大小

8、  -XX:NewRatio=4:設(shè)置年輕代(包括Eden和兩個Survivor區(qū))與終身代的比值(除去永久代)。設(shè)置為4,則年輕代與終身代所占比值為1:4,年輕代占整個堆棧的1/5

9、  -XX:MaxTenuringThreshold=0:設(shè)置垃圾最大年齡,默認(rèn)為:15。如果設(shè)置為0的話,則年輕代對象不經(jīng)過Survivor區(qū),直接進(jìn)入年老代。對于年老代比較多的應(yīng)用,可以提高效率。如果將此值設(shè)置為一個較大值,則年輕代對象會在Survivor區(qū)進(jìn)行多次復(fù)制,這樣可以增加對象再年輕代的存活時間,增加在年輕代即被回收的概論。

10、 -XX:+DisableExplicitGC這個將會忽略手動調(diào)用GC的代碼使得 System.gc()的調(diào)用就會變成一個空調(diào)用,完全不會觸發(fā)任何GC

在tomcat中設(shè)置JVM參數(shù)

windows

修改bin/catalina.bat文件設(shè)置參數(shù)(第一行)
set JAVA_OPTS=-Dfile.encoding=UTF-8 -server -Xms1024m -Xmx2048m -XX:NewSize=512m -XX:MaxNewSize=1024m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:MaxTenuringThreshold=10 -XX:NewRatio=2 -XX:+DisableExplicitGC

linux

修改bin/catalina.sh文件參數(shù)(第一行)
JAVA_OPTS=”-Dfile.encoding=UTF-8 -server -Xms1024m -Xmx2048m -XX:NewSize=512m -XX:MaxNewSize=1024m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:MaxTenuringThreshold=10 -XX:NewRatio=2 -XX:+DisableExplicitGC”

感謝各位的閱讀,以上就是“JVM參數(shù)如何優(yōu)化”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對JVM參數(shù)如何優(yōu)化這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

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

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

jvm
AI