一、JVM參數
1.1 標準參數
-version
-help
-server
-cp
1.2 -X參數
非標準參數,也就是在JDK各個版本中會變動。
-Xint 解釋執行
-Xcomp 第一次使用就編譯成本地代碼
-Xmixed 混合模式,JVM自己決定
1.3 -XX參數
使用的最多的參數類型
非標準化參數,相對不穩定,主要用於JVM調優和Debug。
a.Boolean類型
格式: -XX:[+-]<name> +或-表示啓用或者禁用name屬性
例如: -XX:+UseConcMarkSweepGC 表示啓用CMS類型的垃圾回收器
-XX:+UseG1GC 表示啓用G1類型的垃圾回收器
b.非Boolean類型
格式: -XX<name>=<value> 表示name屬性的值是value
例如: -XX:MaxGCPauseMillis=500 表示最大停頓毫秒時間設置爲500
1.4 其他參數
-Xms1000等價於-XX:InitialHeapSize=1000 設置最小堆內存大小
-Xmx1000等價於-XX:MaxHeapSize=1000 設置最大堆內存大小
-Xss100等價於-XX:ThreadStackSize=100 設置單個線程棧的大小
因此這塊也相當於-XX類型的參數
1.5 設置參數的方式
1)開發工具中設置,比如IDEA,eclipse
2)運行jar包的時候:java -XX:+UseG1GC xxx.jar
3)web容器比如tomcat,可以在腳本中進行設置
4)通過jinfo實時調整某個java進程的參數
參數 | 含義 | 說明 |
XX:CICompilerCount=3
|
最大並行編譯數 | 如果設置大於1,雖然編譯速度會提高,單同樣影響系統穩定性,會增加JVM崩潰的可能 |
-XX:InitialHeapSize=100M
|
初始化堆大小 | 可簡寫爲-Xms100M |
-XX:MaxHeapSize=100M | 最大堆大小 | 可簡寫爲-Xmx100M |
-XX:NewSize=20M | 設置年輕代的大小 | |
-XX:MaxNewSize=50M | 年輕代最大大小 | |
-XX:OldSize=50M | 設置老年代大小 | |
-XX:MetaspaceSize=50M | 設置方法區大小 | |
-XX:MaxMetaspaceSize=50M | 方法區最大大小 | |
-XX:UseParallelGC | 使用ParallelGC | 新生代,吞吐量優先 |
-XX:+UseParallelOldGC
|
使用UseParallelOldGC
|
老年代,吞吐量優先
|
-XX:+UseConcMarkSweepGC
|
使用CMS
|
老年代,停頓時間優先
|
-XX:+UseG1GC
|
使用G1GC
|
新生代,老年代,停頓時間優先
|
-XX:NewRatio
|
新老生代的比值
|
比如-XX:Ratio=4,則表示新生代:老年代=1:4,也就是新
生代佔整個堆內存的1/5
|
-XX:SurvivorRatio
|
兩個S區和Eden區的比值
|
比如-XX:SurvivorRatio=8,也就是(S0+S1):Eden=2:8,
也就是一個S佔整個新生代的1/10
|
-XX:+HeapDumpOnOutOfMemoryError
|
啓動堆內存溢出打印
|
當JVM堆內存發生溢出時,也就是OOM,自動生成dump文件
|
-XX:HeapDumpPath=heap.hprof
|
指定堆內存溢出打印目錄
|
表示在當前目錄生成一個heap.hprof文件
|
XX:+PrintGCDetails -
XX:+PrintGCTimeStamps -
XX:+PrintGCDateStamps
Xloggc:$CATALINA_HOME/logs/gc.log
|
打印出GC日誌
|
可以使用不同的垃圾收集器,對比查看GC情況
|
-Xss3000k | 設置每個線程的堆棧大小 | |
-XX:MaxTenuringThreshold=6 | 晉升老年代的最大臨界值 | 默認值爲15 |
-XX:G1HeapWastePercent
|
允許的浪費堆空間的佔比 | 默認10%,如果併發標記可回收的空間小於10%,則不會觸發MixedGC |
-XX:MaxGCPauseMillis=200ms | G1最大停頓時間 | 暫停時間不能太小,太小就會導致G1跟不上垃圾產生的速度,最終退化成Full GC。因此對這個參數的調優是一個持續的過程,逐步調整到最佳狀態。 |
-XX:ConcGCThreads=n | 併發垃圾收集器使用的線程數量 | 默認值隨JVM運行的平臺不同而不同 |
-XX:G1MixedGCCountTarget=8
|
設置標記週期完成後,對存活數據上限爲 G1MixedGCLIveThresholdPercent 的舊區域執行混合垃圾回收的目標次數
|
默認8次混合垃圾回收,混合回收的目標是要控制在此目標次數以內
|
-XX:G1OldCSetRegionThresholdPercent=1 |
描述Mixed GC時,Old Region被加入到CSet中
|
默認情況下,G1只把10%的Old Region加入到CSet中
|