JVM學習——(四)JVM參數和工具

一、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

 

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