Java啟動參數共分為三類;
- 其一是標準參數(-),所有的JVM實現都必須實現這些參數的功能,而且向后兼容;
- 其二是非標準參數(-X),默認jvm實現這些參數的功能,但是并不保證所有jvm實現都滿足,且不保證向后兼容;
- 其三是非Stable參數(-XX),此類參數各個jvm實現會有所不同,將來可能會隨時取消,需要慎重使用;
-Xms10m
設置堆最小值為10M
-Xmx10m
設置堆最大值為10M
-Xmn10m
設置年輕代大小為10M
-XX:+PrintGCDetails
打印GC的具體信息
-XX:+HeapDumpOnOutOfMemoryError
OOM時導出堆到文件
-XX:HeapDumpPath=d:/a.dump
dump出來的數據存放在D盤下a.dump中
-XX:OnOutOfMemoryError=D:/printstack.bat %p
%p代表的是當前java進程的pid ,當發生內存溢出的時候執行printstack.bat這個腳本,通常可以用作線上內存溢出的報警機制,比如發短信或者郵件通知
-XX:loggc:D:/a.log
將jvm的日志存儲到指定文件
-XX:NewRatio=3
設置年輕代和年老代的比值。如:為3,表示年輕代與年老代比值為1:3,年輕代占整個年輕代年老代和的1/4
-XX:SurvivorRatio=8
年輕代中Eden區與兩個Survivor區的比值。注意Survivor區有兩個。如:8,表示Eden:Survivor=8:1,一個Survivor區占整個年輕代的1/10
-XX:PretenureSizeThreshold=3M
對象的大小大于3M時將直接進入老年代
-XX:-HandlePromotionFailure
在發送Minor GC之前,虛擬機會先檢查老年代最大可用的連續空間是否大于新生代對象總空間,如果這個條件成立,那么Minor GC可用確保是安全的,如果不成立,則虛擬機會查看HandlePromotionFailure設置值是否允許擔保失敗,如果允許,會繼續檢查之前歷次Minor GC中晉升到老年代的平均對象大小是否<老年代最大可用的連續空間,如果小于,將嘗試進行一次Minor GC,盡管這次GC是有風險的,如果大于或者HandlePromotionFailure設置不允許冒險,那么這時要進行一次Full GC
-verbose
-verbose:class 輸出jvm載入類的相關信息,當jvm報告說找不到類或者類沖突時可此進行診斷。
-verbose:gc 輸出每次GC的相關情況。
-verbose:jni 輸出native方法調用的相關情況,一般用于診斷jni調用錯誤信息。
-XX:+UseBiasedLocking
啟用偏向鎖
-XX:BiasedLockingStartupDelay = 0
配合-XX:+UseBiasedLocking參數使用,一般啟動偏向鎖默認是應用程序啟動幾秒鐘之后才激活,設置為0則是關閉延遲