Java啟動(dòng)參數(shù)共分為三類搪桂;
- 其一是標(biāo)準(zhǔn)參數(shù)(-)螃壤,所有的JVM實(shí)現(xiàn)都必須實(shí)現(xiàn)這些參數(shù)的功能,而且向后兼容倡怎;
- 其二是非標(biāo)準(zhǔn)參數(shù)(-X)迅耘,默認(rèn)jvm實(shí)現(xiàn)這些參數(shù)的功能,但是并不保證所有jvm實(shí)現(xiàn)都滿足监署,且不保證向后兼容颤专;
- 其三是非Stable參數(shù)(-XX),此類參數(shù)各個(gè)jvm實(shí)現(xiàn)會(huì)有所不同钠乏,將來(lái)可能會(huì)隨時(shí)取消血公,需要慎重使用;
-Xms10m
設(shè)置堆最小值為10M
-Xmx10m
設(shè)置堆最大值為10M
-Xmn10m
設(shè)置年輕代大小為10M
-XX:+PrintGCDetails
打印GC的具體信息
-XX:+HeapDumpOnOutOfMemoryError
OOM時(shí)導(dǎo)出堆到文件
-XX:HeapDumpPath=d:/a.dump
dump出來(lái)的數(shù)據(jù)存放在D盤下a.dump中
-XX:OnOutOfMemoryError=D:/printstack.bat %p
%p代表的是當(dāng)前java進(jìn)程的pid 缓熟,當(dāng)發(fā)生內(nèi)存溢出的時(shí)候執(zhí)行printstack.bat這個(gè)腳本累魔,通常可以用作線上內(nèi)存溢出的報(bào)警機(jī)制够滑,比如發(fā)短信或者郵件通知
-XX:loggc:D:/a.log
將jvm的日志存儲(chǔ)到指定文件
-XX:NewRatio=3
設(shè)置年輕代和年老代的比值垦写。如:為3,表示年輕代與年老代比值為1:3彰触,年輕代占整個(gè)年輕代年老代和的1/4
-XX:SurvivorRatio=8
年輕代中Eden區(qū)與兩個(gè)Survivor區(qū)的比值梯投。注意Survivor區(qū)有兩個(gè)。如:8,表示Eden:Survivor=8:1分蓖,一個(gè)Survivor區(qū)占整個(gè)年輕代的1/10
-XX:PretenureSizeThreshold=3M
對(duì)象的大小大于3M時(shí)將直接進(jìn)入老年代
-XX:-HandlePromotionFailure
在發(fā)送Minor GC之前尔艇,虛擬機(jī)會(huì)先檢查老年代最大可用的連續(xù)空間是否大于新生代對(duì)象總空間,如果這個(gè)條件成立么鹤,那么Minor GC可用確保是安全的终娃,如果不成立,則虛擬機(jī)會(huì)查看HandlePromotionFailure設(shè)置值是否允許擔(dān)保失敗蒸甜,如果允許棠耕,會(huì)繼續(xù)檢查之前歷次Minor GC中晉升到老年代的平均對(duì)象大小是否<老年代最大可用的連續(xù)空間,如果小于柠新,將嘗試進(jìn)行一次Minor GC窍荧,盡管這次GC是有風(fēng)險(xiǎn)的,如果大于或者HandlePromotionFailure設(shè)置不允許冒險(xiǎn)恨憎,那么這時(shí)要進(jìn)行一次Full GC
-verbose
-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ò)誤信息。
-XX:+UseBiasedLocking
啟用偏向鎖
-XX:BiasedLockingStartupDelay = 0
配合-XX:+UseBiasedLocking參數(shù)使用喇嘱,一般啟動(dòng)偏向鎖默認(rèn)是應(yīng)用程序啟動(dòng)幾秒鐘之后才激活茉贡,設(shè)置為0則是關(guān)閉延遲