一、JVM的參數類型:
1、標配參數:
java -version java -help
2、X參數:
-Xmixed 混合模式(先編譯后執行)
-Xint 解釋執行
-Xcomp 第一次使用就編譯成本地代碼
3、XX參數:
- Boolean類型:公式:-XX:+ (+表示開啟 -表示關閉)
問題:如何查看一個正在運行中的java程序,它的某個JVM參數是否開啟?
public class HelloGC { public static void main(String[] args) throws InterruptedException { System.out.println("*****helloGC"); Thread.sleep(Integer.MAX_VALUE); } }
jps -l jinfo -flag PrintGCDetails 10729 結果:-XX:+PrintGCDetails,表示開啟打印 GC 收集細節(默認不開啟)
- KV設值類型:公式:-XX:屬性key=屬性值value=
jps -l jinfo -flag MetaspaceSize 6932 --若沒有配置參數,則查看系統參數默認值 結果:-XX:MetaspaceSize=21807104
jinfo -flag 配置項 進程編號 jinfo -flags 進程編號
二、如何查看JVM系統參數的默認值
java -XX:+PrintFlagsInitial --查看出廠默認值 java -XX:+PrintFlagsFinal --查看修改更新 (= 沒有修改過 := 人為修改過) java -XX:+PrintFlagsFinal -XX:MetaspaceSize=512m 查看系統參數,並修改元空間大小
java -XX:+PrintCommandLineFlags -version --打印命令行參數(可以看默認垃圾回收器)
結果:-XX:InitialHeapSize=134217728 -XX:MaxHeapSize=2147483648 -XX:+PrintCommandLineFlags
-XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)
三、兩個經典參數:-Xms1024m -Xmx1024m談談你的理解
-Xms等價於 -XX:initialHeapSize -Xmx等價於 -XX:MaxHeapSize