JVM參數(shù)類型及配置實(shí)戰(zhàn)

一晾嘶、JVM參數(shù)類型

JVM參數(shù)類型分為3種:標(biāo)配參數(shù)妓雾,X參數(shù)XX參數(shù)垒迂。

二械姻、標(biāo)配參數(shù)

java:
-version-help机断,-client楷拳,-server-classpath吏奸, -cp欢揖,-showversion
此類參數(shù)無論jdk怎么升級(jí),參數(shù)仍然保持不變奋蔚,相對(duì)比較穩(wěn)定的參數(shù)她混。

三、X參數(shù)

非標(biāo)準(zhǔn)化參數(shù)泊碑,變化較小
-Xin: 解釋執(zhí)行坤按。
-Xcomp: 第一次使用就編譯成本地代碼。
-Xmixed: 混合模式蛾狗,JVM自己來決定是否編譯成本地代碼晋涣,默認(rèn)使用的就是混合模式。

[root@yun-develop-service_01 ycopen]# java -version
java version "1.8.0_172"
Java(TM) SE Runtime Environment (build 1.8.0_172-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.172-b11, mixed mode)

[root@yun-develop-service_01 ycopen]# java -Xint -version
java version "1.8.0_172"
Java(TM) SE Runtime Environment (build 1.8.0_172-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.172-b11, interpreted mode)

[root@yun-develop-service_01 ycopen]# java -Xcomp -version
java version "1.8.0_172"
Java(TM) SE Runtime Environment (build 1.8.0_172-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.172-b11, compiled mode)

四沉桌、XX參數(shù)

非標(biāo)準(zhǔn)化參數(shù)谢鹊,相對(duì)不穩(wěn)定,主要用于JVM調(diào)優(yōu)和debug留凭。它分為Boolean型和K-V型兩種類型佃扼。

1)Boolean類型

1、格式

-XX:[+-]<name>蔼夜, 其中+-表示啟用或禁用name屬性兼耀。

2、示例

-XX:+UseConcMarkSweepGC 表示啟用CMS垃圾收集器求冷。
-XX:+UseG1GC 表示啟用G1垃圾收集器瘤运。

2)K-V類型

1、格式

-XX:<name>=<value> 表示name屬性對(duì)應(yīng)的值是value匠题。

2拯坟、示例

-XX:MaxGCPauseMillis=500 表示GC的最大停頓時(shí)間是500毫秒。

注意:-Xmx和-Xms表示設(shè)置JVM的最大內(nèi)存和最小內(nèi)存韭山,它們不是X參數(shù)郁季,而是XX參數(shù)冷溃。
-Xmx等價(jià)于-XX:MaxHeapSize
-Xms等價(jià)于-XX:InitialHeapSize
-Xss等價(jià)于-XX:ThreadStackSize

[root@yun-develop-service_01 ycopen]# jinfo -flag MaxHeapSize 10211
-XX:MaxHeapSize=3221225472

五、常用JVM參數(shù)

-Xms: 初始堆大小梦裂,是指設(shè)定程序啟動(dòng)時(shí)占用內(nèi)存大小似枕,默認(rèn)為服務(wù)器內(nèi)存的1/64。大點(diǎn)程序會(huì)啟動(dòng)的快一點(diǎn)年柠,但是也可能會(huì)導(dǎo)致機(jī)器暫時(shí)間變慢凿歼。
-Xmx: 最大堆大小,是指設(shè)定程序運(yùn)行期間最大可占用的內(nèi)存大小彪杉,默認(rèn)為服務(wù)器內(nèi)存的1/4毅往。如果程序運(yùn)行需要占用更多的內(nèi)存,超出了這個(gè)設(shè)置值派近,就會(huì)拋出OutOfMemory異常。
-Xss: 為jvm啟動(dòng)的每個(gè)線程分配的內(nèi)存大小洁桌,是指設(shè)定每個(gè)線程的堆棧大小渴丸,默認(rèn)為512K-1024K,大小取決于服務(wù)器配置另凌,從java8以后谱轨,默認(rèn)都是1024K。這個(gè)要依據(jù)你的程序吠谢,看一個(gè)線程大約需要占用多少內(nèi)存土童,可能會(huì)有多少線程同時(shí)運(yùn)行等。
-Xmn: 年輕代大小
-MetaspaceSize: 元空間大小
整個(gè)堆大小=年輕代大小 + 年老代大小 + 持久代(JDK1.8以后稱為元空間)大小

六工坊、JVM內(nèi)存配置規(guī)范

  1. 默認(rèn)空余堆內(nèi)存小于40%時(shí)献汗,JVM就會(huì)增大堆直到-Xmx的最大限制;空余堆內(nèi)存大于70%時(shí)王污,JVM會(huì)減少堆直到-Xms的最小限制罢吃。 因此服務(wù)器一般設(shè)置-Xms和-Xmx相等以避免在每次GC后調(diào)整堆的大小。
  2. 可以利用JVM提供的-Xmn昭齐,-Xms尿招,-Xmx等選項(xiàng)進(jìn)行堆內(nèi)存設(shè)置; 一般將-Xms和-Xmx選項(xiàng)設(shè)置為相同阱驾,而-Xmn為1/4的-Xmx值就谜,建議堆的最大值可以設(shè)置為可用內(nèi)存的最大值的80%。
  3. 16G內(nèi)存的服務(wù)器配置為:-Xmx=16G*0.8=12G里覆,-Xms默認(rèn)和-Xmx大小一樣丧荐,也為12G。-Xmn為1/4的-Xmx值租谈,為4G篮奄。

七捆愁、配置示例

  1. 服務(wù)器硬件配置
    8核CPU、8G 內(nèi)存窟却,JDK 1.8.X
  2. 參數(shù)配置實(shí)例
-server -Xmx3550m -Xms3550m -Xmn1256m -Xss128k -XX:SurvivorRatio=6 -XX:MaxPermSize=256m -XX:ParallelGCThreads=8 -XX:MaxTenuringThreshold=0 -XX:+UseConcMarkSweepGC
  1. 調(diào)優(yōu)說明
  • -Xmx 與 -Xms 相同以避免JVM反復(fù)重新申請(qǐng)內(nèi)存昼丑。-Xmx 的大小約等于系統(tǒng)內(nèi)存大小的一半,即充分利用系統(tǒng)資源夸赫,又給予系統(tǒng)安全運(yùn)行的空間菩帝。
  • -Xmn1256m 設(shè)置年輕代大小為1256MB。此值對(duì)系統(tǒng)性能影響較大茬腿,Sun官方推薦配置年輕代大小為整個(gè)堆的3/8呼奢。
  • -Xss128k 設(shè)置較小的線程棧以支持創(chuàng)建更多的線程,支持海量訪問切平,并提升系統(tǒng)性能握础。
  • -XX:SurvivorRatio=6 設(shè)置年輕代中Eden區(qū)與Survivor區(qū)的比值。系統(tǒng)默認(rèn)是8悴品,根據(jù)經(jīng)驗(yàn)設(shè)置為6禀综,則2個(gè)Survivor區(qū)與1個(gè)Eden區(qū)的比值為2:6,一個(gè)Survivor區(qū)占整個(gè)年輕代的1/8苔严。
  • -XX:ParallelGCThreads=8 配置并行收集器的線程數(shù)定枷,即同時(shí)8個(gè)線程一起進(jìn)行垃圾回收。此值一般配置為與CPU數(shù)目相等届氢。
  • -XX:MaxTenuringThreshold=0 設(shè)置垃圾最大年齡(在年輕代的存活次數(shù))欠窒。如果設(shè)置為0的話,則年輕代對(duì)象不經(jīng)過Survivor區(qū)直接進(jìn)入年老代退子。對(duì)于年老代比較多的應(yīng)用岖妄,可以提高效率;如果將此值設(shè)置為一個(gè)較大值絮供,則年輕代對(duì)象會(huì)在Survivor區(qū)進(jìn)行多次復(fù)制衣吠,這樣可以增加對(duì)象再年輕代的存活時(shí)間,增加在年輕代即被回收的概率壤靶。根據(jù)被海量訪問的動(dòng)態(tài)Web應(yīng)用之特點(diǎn)缚俏,其內(nèi)存要么被緩存起來以減少直接訪問DB,要么被快速回收以支持高并發(fā)海量請(qǐng)求贮乳,因此其內(nèi)存對(duì)象在年輕代存活多次意義不大忧换,可以直接進(jìn)入年老代,根據(jù)實(shí)際應(yīng)用效果向拆,在這里設(shè)置此值為0亚茬。
  • -XX:+UseConcMarkSweepGC 設(shè)置年老代為并發(fā)收集。CMS(ConcMarkSweepGC)收集的目標(biāo)是盡量減少應(yīng)用的暫停時(shí)間浓恳,減少Full GC發(fā)生的幾率刹缝,利用和應(yīng)用程序線程并發(fā)的垃圾回收線程來標(biāo)記清除年老代內(nèi)存碗暗,適用于應(yīng)用中存在比較多的長生命周期對(duì)象的情況。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末梢夯,一起剝皮案震驚了整個(gè)濱河市言疗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌颂砸,老刑警劉巖噪奄,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異人乓,居然都是意外死亡勤篮,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門色罚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來碰缔,“玉大人,你說我怎么就攤上這事戳护∈指海” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵姑尺,是天一觀的道長。 經(jīng)常有香客問我蝠猬,道長切蟋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任榆芦,我火速辦了婚禮柄粹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘匆绣。我一直安慰自己驻右,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布崎淳。 她就那樣靜靜地躺著堪夭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拣凹。 梳的紋絲不亂的頭發(fā)上森爽,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音嚣镜,去河邊找鬼爬迟。 笑死,一個(gè)胖子當(dāng)著我的面吹牛菊匿,可吹牛的內(nèi)容都是我干的付呕。 我是一名探鬼主播计福,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼徽职!你這毒婦竟也來了象颖?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤活箕,失蹤者是張志新(化名)和其女友劉穎力麸,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體育韩,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡克蚂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了筋讨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片埃叭。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖悉罕,靈堂內(nèi)的尸體忽然破棺而出赤屋,到底是詐尸還是另有隱情,我是刑警寧澤壁袄,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布户魏,位于F島的核電站,受9級(jí)特大地震影響触徐,放射性物質(zhì)發(fā)生泄漏皿伺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一栈顷、第九天 我趴在偏房一處隱蔽的房頂上張望逆日。 院中可真熱鬧,春花似錦萄凤、人聲如沸室抽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽坪圾。三九已至,卻和暖如春颤难,著一層夾襖步出監(jiān)牢的瞬間神年,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來泰國打工行嗤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留已日,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓栅屏,卻偏偏與公主長得像飘千,于是被迫代替她去往敵國和親堂鲜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容