天天看點

JVM設定一、參數二、工具三、分析

一、參數

1、環境配置

cpu核數 實體記憶體 作業系統 位數 JDK版本
4 8G Linux 64位 JDK8

2、配置功能

  • JVM日志統一輸出路徑:/home/user/data/log
  • crash日志路徑:/home/user/data/log/hs_err_pid%p.log
  • GC日志路徑:/home/user/data/log/gc.log
  • OOM Dump路徑:/home/user/data/log
  • 跟蹤類加載
  • 跟蹤GC日志
  • 列印指令行參數
  • 列印YGC各個年齡段的對象分布
  • FullGC前後跟蹤類視圖
  • 在GC前後列印GC日志
  • 列印應用暫停的時間
  • 列印程序并發執行問題
  • OOM Dump記憶體

3、參數說明

配置參數 說明
-Xmx2048M 設定JVM最大堆記憶體為2048M。
-Xms2048M 設定JVM初始堆記憶體為2048m。此值可以設定與-Xmx相同,以避免每次垃圾回收完成後JVM重新配置設定記憶體。
-Xmn768M 設定年輕代大小為768M。整個堆大小=年輕代大小 + 年老代大小 + 持久代大小 持久代一般固定大小為64m,是以增大年輕代後,将會減小年老代大小。此值對系統性能影響較大,Sun官方推薦配置為整個堆的3/8
-XX:MaxMetaspaceSize=512M 設定中繼資料空間最大記憶體為512M
-XX:MetaspaceSize=512M 設定中繼資料庫空間大小為512M
-XX:+UseG1GC 使用G1垃圾收集器
-XX:MaxGCPauseMillis=100 最大GC暫停時間
-XX:+ParallelRefProcEnabled 開啟并行處理
-XX:ErrorFile=/home/user/data/log/hs_err_pid%p.log 錯誤日志檔案
-Xloggc:/home/user/data/log/gc.log gc日志路徑,-Xloggc的VM等價參數是-XX:+PrintGC -XX:+PrintGCTimeStamps
-XX:HeapDumpPath=/home/user/data/log 堆異常時日志檔案路徑
-XX:+PrintGCDetails 列印GC詳情
-XX:+PrintGCDateStamps 列印GC日期
-verbose:class 列印類加載資訊
-verbose:gc gc時列印類資訊
-XX:+HeapDumpOnOutOfMemoryError 當抛出java.lang.OutOfMemoryError時,将堆轉儲到檔案
-XX:+PrintClassHistogramBeforeFullGC fullgc前列印類資訊
-XX:+PrintClassHistogramAfterFullGC fullgc後列印類資訊
-XX:+PrintCommandLineFlags 列印GC資訊
-XX:+PrintGCApplicationConcurrentTime 列印應用程式運作的時間
-XX:+PrintGCApplicationStoppedTime 列印應用程式停止的時間
-XX:+PrintTenuringDistribution
-XX:+PrintHeapAtGC 列印每個GC之前和之後的堆資訊

二、工具

1、JDK – jvisualvm.exe

JVM設定一、參數二、工具三、分析

三、分析

幾個線上分析平台

  • gc日志分析: GCeasy.
  • 線程dump分析: fastThread.
  • dump檔案分析: heaphero.
  • dump檔案分析,jvm參數查詢: perfma.