jps 查看java進程的PID
java -XX:+PrintFlagsInitial 顯示所有可設置參數及默認值
java -XX:+PrintFlagsFinal 獲取到所有可設置參數及值(手動設置之后的值)
java -XX:+PrintCommandLineFlags 顯示出JVM初始化完畢后所有跟最初的默認值不同的參數及它們的值
jmap -histo [pid] 查看java堆上的對象分布情況
java用法: java [-options] class [args...](執行類)或 java [-options] -jar jarfile [args...](執行 jar 文件)
譬如:java -cp . -Xmx3G -Xmn2G -server -XX:-TieredCompilation AppMain
[-options]
-d32 使用 32 位數據模型 (如果可用)
-d64 使用 64 位數據模型 (如果可用)
-server 選擇 "server" VM,默認 VM 是 server
-cp <目錄和 zip/jar 文件的類搜索路徑>
-classpath <目錄和 zip/jar 文件的類搜索路徑>,用 : 分隔的目錄, JAR和 ZIP列表, 用於搜索類文件。
-D<名稱>=<值> 設置系統屬性
-verbose:[class|gc|jni] 啟用詳細輸出
-version 輸出產品版本並退出
-showversion 輸出產品版本並繼續
-Xdiag 顯示附加診斷消息
-Xnoclassgc 禁用類垃圾收集
-Xincgc 啟用增量垃圾收集
-Xloggc:<file> 將 GC 狀態記錄在文件中 (帶時間戳)
-Xbatch 禁用后台編譯
-Xms<size> 設置初始 Java 堆大小
-Xmx<size> 設置最大 Java 堆大小
-Xss<size> 設置 Java 線程堆棧大小
-Xprof 輸出 cpu 配置文件數據
-XshowSettings 顯示所有設置並繼續
-XshowSettings:all 顯示所有設置並繼續
-XshowSettings:vm 顯示所有與 vm 相關的設置並繼續
-XshowSettings:properties 顯示所有屬性設置並繼續
-XshowSettings:locale 顯示所有與區域設置相關的設置並繼續
-XX:-UseBiasedLocking 關閉偏向鎖默認會進入輕量級鎖狀態
-XX:-DoEscapeAnalysis 關閉逃逸分析
-XX:-TieredCompilation 關閉分層編譯
-XX:-BackgroundCompilation 關閉異步編譯
-XX:CompileThreshold 方法調用次數或循環次數達到這個閾值就會觸發標准編譯(client:1500,server:10000)
ps:
觸發OSR編譯的閾值計算(OSR編譯就是只編譯該循環代碼不編譯類的其他方法)
-XX:CompileThreshold = 10000
-XX:OnStackReplacePercentage = 140
-XX:InterpreterProfilePercentage = 33
OSR trigger = (CompileThreshold * (OnStackReplacePercentage - InterpreterProfilePercentage)) / 100 = 10700
JIT編譯在默認情況是異步進行的,當觸發某方法或某代碼塊的優化時,先將其放入編譯隊列,然后由編譯線程進行編譯,編譯之后的代碼放在CodeCache中,CodeCache的大小也是有限的,CompileThreshold設置的太低,JIT會將一大堆執行不那么頻繁的代碼進行編譯,並放入CodeCache,導致之后真正執行頻繁的代碼沒有足夠的空間存放。