java啟動(dòng)時(shí)JVM參數(shù)分析

java啟動(dòng)命令
  • 執(zhí)行類:java [-options] class [args…]
  • 執(zhí)行jar文件:java [-options] -jar jarfile [args…]

[-options] 配置 Java 系統(tǒng)參數(shù)
[args…] 配置 Java 運(yùn)行參數(shù) 即main方法中的參數(shù)數(shù)組args遮晚,可以通過(guò)修改啟動(dòng)配置進(jìn)行設(shè)置,多個(gè)參數(shù)之間用空格分隔,如果參數(shù)自身帶有空格拦止,則需要用引號(hào)包裹县遣。

java啟動(dòng)參數(shù)共分為三類
  1. 其一是標(biāo)準(zhǔn)參數(shù)(-)糜颠,顧名思義,標(biāo)準(zhǔn)參數(shù)中包括功能以及輸出的結(jié)果都是很穩(wěn)定的萧求,基本上不會(huì)隨著JVM版本的變化而變化其兴。我們可以通過(guò) -help 命令來(lái)檢索出所有標(biāo)準(zhǔn)參數(shù)。所有的JVM實(shí)現(xiàn)都必須實(shí)現(xiàn)這些參數(shù)的功能夸政,而且向后兼容元旬;該參數(shù)在程序中任何位置都可以訪問(wèn)到,優(yōu)先級(jí)最高守问。覆蓋程序中同名配置匀归;預(yù)定義的標(biāo)準(zhǔn)參數(shù)(非-D開(kāi)頭的選項(xiàng))的個(gè)數(shù)是有限的。但是我們還可以自定義設(shè)置系統(tǒng)屬性耗帕,系統(tǒng)參數(shù)的標(biāo)準(zhǔn)格式為:-Dargname=argvalue穆端,多個(gè)參數(shù)之間用空格隔開(kāi),如果參數(shù)值中間有空格仿便,則用引號(hào)括起來(lái)体啰。其中,參數(shù)名可以是 Java 默認(rèn)的嗽仪,此類參數(shù)由 JVM 虛擬機(jī)自動(dòng)識(shí)別并生效狡赐,例如,-Dfile.encoding=UTF-8 用于指定文件編碼格式钦幔;也可以是用戶自定義的枕屉,例如,-Dmy=user鲤氢,程序中可以讀取該參數(shù)值搀擂,執(zhí)行相關(guān)邏輯。虛擬機(jī)系統(tǒng)參數(shù)中設(shè)置的參數(shù)鍵值對(duì)(只有-D定義的系統(tǒng)屬性是鍵值對(duì)形式)卷玉,在程序中可以用System.getProperty("propertyName")獲取對(duì)應(yīng)參數(shù)值哨颂。

  2. 其二是非標(biāo)準(zhǔn)參數(shù)(-X),默認(rèn)jvm實(shí)現(xiàn)這些參數(shù)的功能相种,但是并不保證所有jvm實(shí)現(xiàn)都滿足威恼,且不保證向后兼容;

  3. 其三是非Stable參數(shù)(-XX)寝并,此類參數(shù)各個(gè)jvm實(shí)現(xiàn)會(huì)有所不同箫措,將來(lái)可能會(huì)隨時(shí)取消,需要慎重使用衬潦;

提示:2斤蔓、3為非標(biāo)準(zhǔn)系統(tǒng)參數(shù)形式,一般與 JVM 虛擬機(jī)設(shè)置有關(guān)镀岛,參數(shù)名和值都由 JVM 規(guī)范規(guī)定弦牡。例如:-Xms :初始堆大小友驮、-Xmx :最大堆大小。主要用于JVM調(diào)優(yōu)和debug驾锰。
該參數(shù)的書寫形式又分為兩大類:
 ⌒读簟①、Boolean類型
格式:-XX:[±] 表示啟用或者禁用name屬性椭豫。例子:-XX:+UseG1GC(表示啟用G1垃圾收集器)
 〕苌②、Key-Value類型
格式:-XX:= 表示name的屬性值為value捻悯。例子:-XX:MaxGCPauseMillis=500(表示設(shè)置GC的最大停頓時(shí)間是500ms)

JVM調(diào)優(yōu)參數(shù)
參數(shù)及其默認(rèn)值 描述 用例/所屬
-verbose:[class|gc|jni] -verbose:class 輸出jvm載入類的相關(guān)信息匆赃,當(dāng)jvm報(bào)告說(shuō)找不到類或者類沖突時(shí)可此進(jìn)行診斷。-verbose:gc 輸出每次GC的相關(guān)情況今缚。-verbose:jni 輸出native方法調(diào)用的相關(guān)情況算柳,一般用于診斷jni調(diào)用錯(cuò)誤信息。
-Xms<size> 設(shè)置JVM初始java堆內(nèi)存為512m姓言。此值可以設(shè)置與-Xmx相同瞬项,以避免每次垃圾回收完成后JVM重新分配內(nèi)存。 -Xms512m
-Xmx<size> 設(shè)置JVM最大可用java堆內(nèi)存為512M -Xmx512m
-Xmn<size> 設(shè)置年輕代大小為200M何荚。整個(gè)堆大小=年輕代大小 + 年老代大小 + 持久代大小囱淋。持久代一般固定大小為64m,所以增大年輕代后餐塘,將會(huì)減小年老代大小妥衣。此值對(duì)系統(tǒng)性能影響較大,Sun官方推薦配置為整個(gè)堆的3/8戒傻。 -Xmn200m
-Xss<size> 設(shè)置每個(gè) Java 線程堆棧大小税手。JDK5.0以后每個(gè)線程堆棧大小為1M,以前每個(gè)線程堆棧大小為256K需纳。更具應(yīng)用的線程所需內(nèi)存大小進(jìn)行調(diào)整芦倒。在相同物理內(nèi)存下,減小這個(gè)值能生成更多的線程不翩。但是操作系統(tǒng)對(duì)一個(gè)進(jìn)程內(nèi)的線程數(shù)還是有限制的兵扬,不能無(wú)限生成,經(jīng)驗(yàn)值在3000~5000左右口蝠。 -Xss128k
-Xloggc:file 與-verbose:gc功能類似器钟,只是將每次GC事件的相關(guān)情況記錄到一個(gè)文件中,文件的位置最好在本地亚皂,以避免網(wǎng)絡(luò)的潛在問(wèn)題俱箱。若與verbose命令同時(shí)出現(xiàn)在命令行中,則以-Xloggc為準(zhǔn)灭必。
-Xprof 跟蹤正運(yùn)行的程序狞谱,并將跟蹤數(shù)據(jù)在標(biāo)準(zhǔn)輸出輸出;適合于開(kāi)發(fā)環(huán)境調(diào)試禁漓。
-XX:-DisableExplicitGC 禁止調(diào)用System.gc()跟衅;但jvm的gc仍然有效 行為參數(shù)
-XX:+MaxFDLimit 最大化文件描述符的數(shù)量限制 行為參數(shù)
-XX:+ScavengeBeforeFullGC 新生代GC優(yōu)先于Full GC執(zhí)行 行為參數(shù)
-XX:+UseGCOverheadLimit 在拋出OOM之前限制jvm耗費(fèi)在GC上的時(shí)間比例 行為參數(shù)
-XX:-UseConcMarkSweepGC 對(duì)老生代采用并發(fā)標(biāo)記交換算法進(jìn)行GC。jvm中GC執(zhí)行的一種方式播歼,并發(fā)(ConcMarkSweepGC)是指多個(gè)線程并發(fā)執(zhí)行GC伶跷,一般適用于多處理器系統(tǒng)中,可以提高GC的效率秘狞,但算法復(fù)雜叭莫,系統(tǒng)消耗較大; 行為參數(shù)
-XX:-UseParallelGC 啟用并行GC烁试。jvm中GC執(zhí)行的一種方式雇初,并行(ParallelGC)是指GC運(yùn)行時(shí),對(duì)應(yīng)用程序運(yùn)行沒(méi)有影響减响,GC和app兩者的線程在并發(fā)執(zhí)行靖诗,這樣可以最大限度不影響app的運(yùn)行; 行為參數(shù)
-XX:-UseParallelOldGC 對(duì)Full GC啟用并行支示,當(dāng)-XX:-UseParallelGC啟用時(shí)該項(xiàng)自動(dòng)啟用 行為參數(shù)
-XX:-UseSerialGC 啟用串行GC刊橘。jvm中GC執(zhí)行的一種方式,串行(SerialGC)是jvm的默認(rèn)GC方式颂鸿,一般適用于小型應(yīng)用和單處理器促绵,算法比較簡(jiǎn)單,GC效率也較高嘴纺,但可能會(huì)給應(yīng)用帶來(lái)停頓败晴; 行為參數(shù)
-XX:+UseThreadPriorities 啟用本地線程優(yōu)先級(jí) 行為參數(shù)
-XX:LargePageSizeInBytes=4m 設(shè)置用于Java堆的大頁(yè)面尺寸 性能調(diào)優(yōu)
-XX:MaxHeapFreeRatio=70 GC后java堆中空閑量占的最大比例 性能調(diào)優(yōu)
-XX:MaxNewSize=size 新生成對(duì)象能占用內(nèi)存的最大值 性能調(diào)優(yōu)
-XX:MaxPermSize=64m 老生代對(duì)象能占用內(nèi)存的最大值 性能調(diào)優(yōu)
-XX:MinHeapFreeRatio=40 GC后java堆中空閑量占的最小比例 性能調(diào)優(yōu)
-XX:NewRatio=2 新生代內(nèi)存容量與老生代內(nèi)存容量的比例 性能調(diào)優(yōu)
-XX:NewSize=2.125m 新生代對(duì)象生成時(shí)占用內(nèi)存的默認(rèn)值 性能調(diào)優(yōu)
-XX:ReservedCodeCacheSize=32m 保留代碼占用的內(nèi)存容量 性能調(diào)優(yōu)
-XX:ThreadStackSize=512 設(shè)置線程棧大小,若為0則使用系統(tǒng)默認(rèn)值 性能調(diào)優(yōu)
-XX:+UseLargePages 使用大頁(yè)面內(nèi)存
-XX:-CITime 打印消耗在JIT編譯的時(shí)間 調(diào)試參數(shù)
-XX:ErrorFile=./hs_err_pid<pid>.log 保存錯(cuò)誤日志或者數(shù)據(jù)到文件中 調(diào)試參數(shù)
-XX:-ExtendedDTraceProbes 開(kāi)啟solaris特有的dtrace探針 調(diào)試參數(shù)
-XX:HeapDumpPath=./java_pid<pid>.hprof 指定導(dǎo)出堆信息時(shí)的路徑或文件名 調(diào)試參數(shù)
-XX:-HeapDumpOnOutOfMemoryError 當(dāng)首次遭遇OOM時(shí)導(dǎo)出此時(shí)堆中相關(guān)信息 調(diào)試參數(shù)
-XX:OnError="<cmd args>;<cmd args>" 出現(xiàn)致命ERROR之后運(yùn)行自定義命令 調(diào)試參數(shù)
-XX:OnOutOfMemoryError="<cmd args>;<cmd args>" 當(dāng)首次遭遇OOM時(shí)執(zhí)行自定義命令 調(diào)試參數(shù)
-XX:-PrintClassHistogram 遇到Ctrl-Break后打印類實(shí)例的柱狀信息颖医,與jmap -histo功能相同 調(diào)試參數(shù)
-XX:-PrintConcurrentLocks 遇到Ctrl-Break后打印并發(fā)鎖的相關(guān)信息位衩,與jstack -l功能相同 調(diào)試參數(shù)
-XX:-PrintCommandLineFlags 打印在命令行中出現(xiàn)過(guò)的標(biāo)記 調(diào)試參數(shù)
-XX:-PrintCompilation 當(dāng)一個(gè)方法被編譯時(shí)打印相關(guān)信息 調(diào)試參數(shù)
-XX:-PrintGC 每次GC時(shí)打印相關(guān)信息 調(diào)試參數(shù)
-XX:-PrintGC Details 每次GC時(shí)打印詳細(xì)信息 調(diào)試參數(shù)
-XX:-PrintGCTimeStamps 打印每次GC的時(shí)間戳 調(diào)試參數(shù)
-XX:-TraceClassLoading 跟蹤類的加載信息 調(diào)試參數(shù)
-XX:-TraceClassLoadingPreorder 跟蹤被引用到的所有類的加載信息 調(diào)試參數(shù)
-XX:-TraceClassResolution 跟蹤常量池 調(diào)試參數(shù)
-XX:-TraceClassUnloading 跟蹤類的卸載信息 調(diào)試參數(shù)
-XX:-TraceLoaderConstraints 跟蹤類加載器約束的相關(guān)信息 調(diào)試參數(shù)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市熔萧,隨后出現(xiàn)的幾起案子糖驴,更是在濱河造成了極大的恐慌,老刑警劉巖佛致,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贮缕,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡俺榆,警方通過(guò)查閱死者的電腦和手機(jī)感昼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)罐脊,“玉大人定嗓,你說(shuō)我怎么就攤上這事蜕琴。” “怎么了宵溅?”我有些...
    開(kāi)封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵凌简,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我恃逻,道長(zhǎng)雏搂,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任寇损,我火速辦了婚禮凸郑,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘矛市。我一直安慰自己芙沥,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布尘盼。 她就那樣靜靜地躺著憨愉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪卿捎。 梳的紋絲不亂的頭發(fā)上配紫,一...
    開(kāi)封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音午阵,去河邊找鬼躺孝。 笑死,一個(gè)胖子當(dāng)著我的面吹牛底桂,可吹牛的內(nèi)容都是我干的植袍。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼籽懦,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼于个!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起暮顺,我...
    開(kāi)封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤厅篓,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后捶码,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體羽氮,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年惫恼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了档押。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖令宿,靈堂內(nèi)的尸體忽然破棺而出叼耙,到底是詐尸還是另有隱情,我是刑警寧澤掀淘,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布旬蟋,位于F島的核電站油昂,受9級(jí)特大地震影響革娄,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜冕碟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一拦惋、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧安寺,春花似錦厕妖、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至迎捺,卻和暖如春举畸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背凳枝。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工抄沮, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人岖瑰。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓叛买,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親蹋订。 傳聞我的和親對(duì)象是個(gè)殘疾皇子率挣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

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

  • Java虛擬機(jī)深入理解系列全部文章更新中... 深入理解Java虛擬機(jī)-Java內(nèi)存區(qū)域透徹分析 深入理解Java...
    程序員歐陽(yáng)閱讀 456評(píng)論 0 1
  • 1. JVM參數(shù)分類 標(biāo)準(zhǔn)參數(shù)(-),所有的JVM實(shí)現(xiàn)都必須實(shí)現(xiàn)這些參數(shù)的功能露戒,而且向后兼容椒功; 非標(biāo)準(zhǔn)參數(shù)(-X)...
    Coding小聰閱讀 2,279評(píng)論 0 0
  • JVM參數(shù) 功能開(kāi)關(guān): 性能參數(shù): 調(diào)試參數(shù):
    小李_a98e閱讀 2,013評(píng)論 0 0
  • JVM參數(shù)分類 JVM參數(shù)分為標(biāo)準(zhǔn)參數(shù)和非標(biāo)準(zhǔn)參數(shù): 標(biāo)準(zhǔn)參數(shù):"-"開(kāi)頭的參數(shù),如-client等玫锋; 非標(biāo)準(zhǔn)參數(shù)...
    星冉子閱讀 567評(píng)論 0 0
  • 虛擬機(jī)大致分為系統(tǒng)虛擬機(jī)(vmware,可運(yùn)行完整操作系統(tǒng)的軟件平臺(tái))和程序虛擬機(jī)(jvm蛾茉,專門為執(zhí)行當(dāng)個(gè)計(jì)算機(jī)程...
    MicoCube閱讀 1,019評(píng)論 0 0