轉載請保留原文鏈接: http://dashidan.com/article/java/basic/22.html
Java虛擬機簡稱JVM(Java Virtual Machine).像一個構造十分精密的儀器, 提供了一些可以調控機器運行狀態的參數. 這些參數需要根據自己的實際的生產環境的要求來設置.就像頭文字D中的那輛車86, 只有經過對應的配置和調試, 才能達到跑車的最優性能.
不同的廠家的SDK有不同的配置, 我們以sun公司出品的官方JDK爲例介紹下JVM參數.
-d32 使用 32 位數據模型 (如果可用)
-d64 使用 64 位數據模型 (如果可用)
-server 選擇 "server" VM
默認 VM 是 server.
-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
-agentpath:<pathname>[=<選項>]
按完整路徑名加載本機代理庫
-javaagent:<jarpath>[=<選項>]
加載 Java 編程語言代理, 請參閱 java.lang.instrument
-splash:<imagepath>
使用指定的圖像顯示啓動屏幕`這裏寫代碼片`
② 非標準配置選項
—
-Xmixed 混合模式執行 (默認)
-Xint 僅解釋模式執行
-Xbootclasspath:<用 ; 分隔的目錄和 zip/jar 文件>
設置搜索路徑以引導類和資源
-Xbootclasspath/a:<用 ; 分隔的目錄和 zip/jar 文件>
附加在引導類路徑末尾
-Xbootclasspath/p:<用 ; 分隔的目錄和 zip/jar 文件>
置於引導類路徑之前
-Xdiag 顯示附加診斷消息
-Xnoclassgc 禁用類垃圾收集
-Xincgc 啓用增量垃圾收集
-Xloggc:<file> 將 GC 狀態記錄在文件中 (帶時間戳)
-Xbatch 禁用後臺編譯
-Xms<size> 設置初始 Java 堆大小 示例:
-Xms6291456
-Xms6144k
-Xms6m
-Xms1g
-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
顯示所有與區域設置相關的設置並繼續
③ JVM性能優化示例:
—
* 高吞吐量(`Higher Throughput`)JVM性能優化示例:
java -d64 -server -XX:+AggressiveOpts -XX:+UseLargePages -Xmn10g -Xms26g -Xmx26g
* 低延遲(`Lower Response Time`)JVM性能優化示例:
java -d64 -XX:+UseG1GC -Xms26g Xmx26g -XX:MaxGCPauseMillis=500 -XX:+PrintGCTimeStamps
④ 著名中間件jvm參數配置
—
###1.`zookeeper`JVM參數設置:
-XX:+HeapDumpOnOutOfMemoryError
-XX:OnOutOfMemoryError=kill -9 %p
-Xmx1000m
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.local.only=false
###2.`apollo`JVM參數設置:
-ea
-server
-Xmx1G
-XX:+HeapDumpOnOutOfMemoryError
-XX:-UseBiasedLocking
-Dcom.sun.management.jmxremote
###3.參數說明:
-XX:+HeapDumpOnOutOfMemoryError參數表示當JVM發生內存溢出時,自動生成信息文件.
-XX:HeapDumpPath= {path}/java_heapdump.hprof. 如果不指定文件名,默認名爲:java___
⑤ 建議配置
—
以下是個人建議, 不一定使用全部場景.根據自己的應用場景配置.
-d64
-Xms4g
-Xmx4g
-XX:+HeapDumpOnOutOfMemoryError
-Dcom.sun.management.jmxremote