jvm參數及分析工具
阿新 • • 發佈:2019-02-19
16px 標記清除 對象 標記 默認 ace 日誌 mil init
-Xmx4G | 設置堆的最大內存大小為4GB,也可通過-XX:MaxHeapSize=4GB進行設置 |
-Xms256m | 設置堆的初始內存大小為256兆,如果未設置此選項,則初始大小將設置為新生代和年老代分配的內存大小總和,也可通過-XX:InitialHeapSize=256m進行設置 |
-Xmn256m | 設置新生代的初始內存大小和最大內存大小為256兆,也可通過-XX:NewSize=256m設置新生代初始內存大小、-XX:MaxNewSize=256m設置新生代最大內存大小 |
-Xss256k | 設置每個線程的堆棧大小為256KB,也可通過-XX:ThreadStackSize=256k進行設置。默認值與運行環境有關,64位linux系統中默認值為1024KB |
-XX:MetaspaceSize=256m |
設置元空間擴容時觸發垃圾回收的閾值,即隨著Metaspace的不斷擴容,達到該值時觸發一次FGC。 Metaspace的初始容量一定是21807104(約20.8m)和MetaspaceSize及MaxMetaspaceSize設置的值無關,所以擴容區間是[20.8m, MaxMetaspaceSize) |
-XX:MaxMetaspaceSize=256m | 設置元空間的最大本機內存為256兆 |
-XX:NewRatio=1 | 設置年老代和新生代占用的內存空間的比值,即old/new=1,默認值是2 |
-XX:NewSize=256m | 設置新生代的初始內存大小為256兆 |
-XX:SurvivorRatio=4 | 設置Eden區和Survivor大小比值,即Eden/Survivor=4,該設置表明每個Survivor區在新生代中占1/6的空間,該設置默認值為8 |
-XX:MaxTenuringThreshold=20 | 設置進入老年代的門檻,即對象在Survivor區之間拷貝了20次則將該對象復制到老年代 |
-XX:MaxNewSize=256m | 設置新生代的最大內存大小為256兆 |
-XX:InitialHeapSize=256m | 設置堆的初始內存大小為256兆 |
-XX:MaxHeapSize=4GB | 設置堆的最大內存大小為4GB |
-XX:PermSize=256m |
設置分配給永久代的空間(以字節為單位),如果超出則會觸發垃圾回收。此選項在JDK 8中已棄用,並被該-XX:MetaspaceSize選項取代(原因是jdk1.8已經將永久代移到了本地內存中,稱為MetaSpace) |
-XX:MaxPermSize=256m | 設置最大永久生成空間大小(以字節為單位)。此選項在JDK 8中已棄用,並由該-XX:MaxMetaspaceSize選項取代。 |
-XX:MaxGCPauseMillis=500 | 設置一次GC過程大的暫停時間,單位是毫秒 |
-XX:+UseSerialGC | 使用串行垃圾收集器,默認情況下,禁用此選項,並根據計算機的配置和JVM的類型自動選擇收集器 |
-XX:+UseParallelGC | 開啟並行垃圾收集器(也稱為吞吐量收集器),對新生代有效,老年代依然是串行垃圾收集器 |
-XX:+UseParNewGC | 對新生代使用並行線程進行垃圾回收,設置-XX:+UseConcMarkSweepGC選項時會自動啟用該選項 |
-XX:+UseParallelOldGC | 對老年代使用並行垃圾收集器,開啟此選項時-XX:+UseParallelGC會自動被開啟 |
-XX:+UseConcMarkSweepGC | 開啟並發標記清除垃圾收集器,並自動開啟-XX:+UseParNewGC且無法禁用 |
-XX:ParallelGCThreads=2 | 設置新生代和老年代中並行垃圾收集器開啟的線程數,默認值是系統可用CPU的數量 |
-XX:+PrintGC | 允許打印GC信息 |
-XX:+PrintGCDetails | 允許打印GX詳細信息 |
-XX:+PrintGCDateStamps | 允許打印GC日期戳 |
-XX:+PrintGCTimeStamps | 允許打印GC時間戳 |
-Xloggc:filename | gc日誌輸出到指定文件 |
oracle官方文檔表示,在以下配置的計算機上,默認情況下選擇吞吐量垃圾收集器;初始堆大小為1/64的物理內存,最大為1GB;最大堆大小為1/4物理內存,最大為1GB:
①.2個以上處理器
②.2GB以上的物理內存
分析工具
jmap -heap pid
查看指定java進程的jvm參數和當前堆內各個區的內存使用情況(pid表示進程id)
jstack pid
查看指定java進程的棧內日誌,主要用於分析線程的運行狀況
jstat -gc pid 1000
每隔一秒統計一次gc的回收情況
jvm參數及分析工具