22.jvm參數優化

22.jvm參數優化
轉載請保留原文鏈接: http://dashidan.com/article/java/basic/22.html

Java虛擬機簡稱JVM(Java Virtual Machine).像一個構造十分精密的儀器, 提供了一些可以調控機器運行狀態的參數. 這些參數需要根據自己的實際的生產環境的要求來設置.就像頭文字D中的那輛車86, 只有經過對應的配置和調試, 才能達到跑車的最優性能.

22-1

不同的廠家的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:jniJNI 函數執行其他檢查
    -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..:XX:HeapDumpPath= {path}/java_heapdump.hprof. 如果不指定文件名,默認名爲:java___ ⑤ 建議配置 — 以下是個人建議, 不一定使用全部場景.根據自己的應用場景配置.
    -d64 
    -Xms4g 
    -Xmx4g
    -XX:+HeapDumpOnOutOfMemoryError
    -Dcom.sun.management.jmxremote

不要過分糾結

有時採用更高配置的硬件更有效.

⑥ 參考文章

配置jvm和java參數

java技術文檔

⑦ 相關文章

Java從入門到精通

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章