java -help
用法: java [-options] class [args...] (執行類) 或 java [-options] -jar jarfile [args...] (執行 jar 文件) 其中選項包括: -d32 使用 32 位數據模型 (如果可用) -d64 使用 64 位數據模型 (如果可用) -server 選擇 "server" VM,默認 VM 是 server.
設置jvm使server模式,特點是啟動速度比較慢,但運行時性能和內存管理效率很高,適用於生產環境。在具有64位能力的jdk環境下將默認啟用該模式,而忽略-client參數。 -cp <目錄和 zip/jar 文件的類搜索路徑> -classpath <目錄和 zip/jar 文件的類搜索路徑> 用 ; 分隔的目錄, JAR 檔案 和 ZIP 檔案列表, 用於搜索類文件。 -D<名稱>=<值> 設置系統屬性 -verbose:[class|gc|jni] 啟用詳細輸出 -version 輸出產品版本並退出 -version:<值> 需要指定的版本才能運行 -showversion 輸出產品版本並繼續 -jre-restrict-search | -no-jre-restrict-search 在版本搜索中包括/排除用戶專用 JRE -? -help 輸出此幫助消息 -X 輸出非標准選項的幫助 -ea[:<packagename>...|:<classname>] -enableassertions[:<packagename>...|:<classname>] 按指定的粒度啟用斷言 -da[:<packagename>...|:<classname>] -disableassertions[:<packagename>...|:<classname>] 禁用具有指定粒度的斷言 -esa | -enablesystemassertions 啟用系統斷言 -dsa | -disablesystemassertions 禁用系統斷言 -agentlib:<libname>[=<選項>] 加載本機代理庫 <libname>, 例如 -agentlib:hprof 另請參閱 -agentlib:jdwp=help 和 -agentlib:hprof=help
其中libname為本地代理庫文件名,默認搜索路徑為環境變量PATH中的路徑,options為傳給本地庫啟動時的參數,多個參數之間用逗號分隔。
在Windows平台上jvm搜索本地庫名為libname.dll的文件,在linux上jvm搜索本地庫名為libname.so的文件,搜索路徑環境變量在不同系統上有所不同,比如Solaries上就默認搜索LD_LIBRARY_PATH。
-agentpath:<pathname>[=<選項>]
按完整路徑名加載本機代理庫
按全路徑裝載本地庫,不再搜索PATH中的路徑;其他功能和agentlib相同;更多的信息待續,在后續的JVMTI部分會詳述。
-javaagent:<jarpath>[=<選項>] 加載 Java 編程語言代理, 請參閱 java.lang.instrument -splash:<imagepath> 使用指定的圖像顯示啟動屏幕 有關詳細信息, 請參閱 http://www.oracle.com/technetwork/java/javase/documentation/index.html。
Java -X
C:\Users\Administrator>java -X -Xmixed 混合模式執行 (默認) -Xint 僅解釋模式執行 -Xbootclasspath:<用 ; 分隔的目錄和 zip/jar 文件> 設置搜索路徑以引導類和資源 -Xbootclasspath/a:<用 ; 分隔的目錄和 zip/jar 文件> 附加在引導類路徑末尾 -Xbootclasspath/p:<用 ; 分隔的目錄和 zip/jar 文件> 置於引導類路徑之前 -Xdiag 顯示附加診斷消息 -Xnoclassgc 禁用類垃圾收集 -Xincgc 啟用增量垃圾收集 -Xloggc:<file> 將 GC 狀態記錄在文件中 (帶時間戳) -Xbatch 禁用后台編譯 -Xms<size> 設置初始 Java 堆大小 -Xmx<size> 設置最大 Java 堆大小 -Xss<size> 設置 Java 線程堆棧大小 -Xprof 輸出 cpu 配置文件數據 -Xfuture 啟用最嚴格的檢查, 預期將來的默認值 -Xrs 減少 Java/VM 對操作系統信號的使用 (請參閱文檔) -Xcheck:jni 對 JNI 函數執行其他檢查 -Xshare:off 不嘗試使用共享類數據 -Xshare:auto 在可能的情況下使用共享類數據 (默認) -Xshare:on 要求使用共享類數據, 否則將失敗。 -XshowSettings 顯示所有設置並繼續 -XshowSettings:all 顯示所有設置並繼續 -XshowSettings:vm 顯示所有與 vm 相關的設置並繼續 -XshowSettings:properties 顯示所有屬性設置並繼續 -XshowSettings:locale 顯示所有與區域設置相關的設置並繼續 -X 選項是非標准選項, 如有更改, 恕不另行通知。
三、JVM非Stable參數(-XX)
Java 6(update 21oder 21之后)版本, HotSpot JVM 提供給了兩個新的參數,在JVM啟動后,在命令行中可以輸出所有XX參數和值。
-XX:+PrintFlagsFinal and -XX:+PrintFlagsInitial
- 1
讀者可以使用以下語句輸出所有的參數和默認值
java -XX:+PrintFlagsInitial -XX:+PrintFlagsInitial>>1.txt
由於非State參數非常的多,因此這里就不列出所有參數進行講解。只介紹我們比較常用的。
Java HotSpot VM中-XX:的可配置參數列表進行描述;
這些參數可以被松散的聚合成三類:
行為參數(Behavioral Options):用於改變jvm的一些基礎行為;
性能調優(Performance Tuning):用於jvm的性能調優;
調試參數(Debugging Options):一般用於打開跟蹤、打印、輸出等jvm參數,用於顯示jvm更加詳細的信息;
行為參數(功能開關) -XX:-DisableExplicitGC 禁止調用System.gc();但jvm的gc仍然有效 -XX:+MaxFDLimit 最大化文件描述符的數量限制 -XX:+ScavengeBeforeFullGC 新生代GC優先於Full GC執行 -XX:+UseGCOverheadLimit 在拋出OOM之前限制jvm耗費在GC上的時間比例 -XX:-UseConcMarkSweepGC 對老生代采用並發標記交換算法進行GC -XX:-UseParallelGC 啟用並行GC -XX:-UseParallelOldGC 對Full GC啟用並行,當-XX:-UseParallelGC啟用時該項自動啟用 -XX:-UseSerialGC 啟用串行GC -XX:+UseThreadPriorities 啟用本地線程優先級 性能調優 -XX:LargePageSizeInBytes=4m 設置用於Java堆的大頁面尺寸 -XX:MaxHeapFreeRatio=70 GC后java堆中空閑量占的最大比例 -XX:MaxNewSize=size 新生成對象能占用內存的最大值 -XX:MaxPermSize=64m 老生代對象能占用內存的最大值 -XX:MinHeapFreeRatio=40 GC后java堆中空閑量占的最小比例 -XX:NewRatio=2 新生代內存容量與老生代內存容量的比例 -XX:NewSize=2.125m 新生代對象生成時占用內存的默認值 -XX:ReservedCodeCacheSize=32m 保留代碼占用的內存容量 -XX:ThreadStackSize=512 設置線程棧大小,若為0則使用系統默認值 -XX:+UseLargePages 使用大頁面內存 調試參數 -XX:-CITime 打印消耗在JIT編譯的時間 -XX:ErrorFile=./hs_err_pid<pid>.log 保存錯誤日志或者數據到文件中 -XX:-ExtendedDTraceProbes 開啟solaris特有的dtrace探針 -XX:HeapDumpPath=./java_pid<pid>.hprof 指定導出堆信息時的路徑或文件名 -XX:-HeapDumpOnOutOfMemoryError 當首次遭遇OOM時導出此時堆中相關信息 -XX:OnError="<cmd args>;<cmd args>" 出現致命ERROR之后運行自定義命令 -XX:OnOutOfMemoryError="<cmd args>;<cmd args>" 當首次遭遇OOM時執行自定義命令 -XX:-PrintClassHistogram 遇到Ctrl-Break后打印類實例的柱狀信息,與jmap -histo功能相同 -XX:-PrintConcurrentLocks 遇到Ctrl-Break后打印並發鎖的相關信息,與jstack -l功能相同 -XX:-PrintCommandLineFlags 打印在命令行中出現過的標記 -XX:-PrintCompilation 當一個方法被編譯時打印相關信息 -XX:-PrintGC 每次GC時打印相關信息 -XX:-PrintGC Details 每次GC時打印詳細信息 -XX:-PrintGCTimeStamps 打印每次GC的時間戳 -XX:-TraceClassLoading 跟蹤類的加載信息 -XX:-TraceClassLoadingPreorder 跟蹤被引用到的所有類的加載信息 -XX:-TraceClassResolution 跟蹤常量池 -XX:-TraceClassUnloading 跟蹤類的卸載信息 -XX:-TraceLoaderConstraints 跟蹤類加載器約束的相關信息