1. 程式人生 > >Jvm參數配置

Jvm參數配置

line 同時存在 sport 先後 不想 bsp port src res

一、非穩態選項使用說明

-XX:+<option> 啟用option
-XX:-<option> 不啟用option
-XX:<option>=<number> 設定option的值為數字類型,可跟單位,例如 32k, 1024m, 2g
-XX:<option>=<string> 設定option的值為字符串,例如-XX:HeapDumpPath=./dump.core

二、Java相關的JVM內存參數

-Xms :設置Java堆棧的初始化大小
-Xmx :設置最大的java堆大小
-Xmn :設置Young區大小
-Xss :設置java線程堆棧大小
-XX:PermSize and MaxPermSize :設置持久帶的大小
-XX:NewRatio :設置年輕代和老年代的比值
-XX:NewSize :設置年輕代的大小
-XX:SurvivorRation=n :設置年輕代中E去與倆個S去的比值

三、打印垃圾回收器信息和設置垃圾回收器(串行、並行、並發等行為的收集器)

-verbose:gc :記錄GC運行以及運行時間,一般用來查看GC是否有瓶頸
-XX:+PrintGCDetails :記錄GC運行時的詳細數據信息,包括新生占用的內存大小及消耗時間
-XX:-PrintGCTimeStamps :打印收集的時間戳
-XX:+UseParallelGC :使用並行垃圾收集器
-XX:-UseConcMarkSweepGC :使用並發標誌掃描收集器
-XX:-UseSerialGC :使用串行垃圾收集器
-Xloggc:filename :設置GC記錄的文件
-XX:+UseGCLogFileRotation :啟用GC日誌文件的自動轉儲
-XX:GCLogFileSize=1M :控制GC日誌文件的大小

四、調試參數

-Xdebug
-Xnoagent
-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000
-XX:HeapDumpPath=./java_pid.hprof :Path to directory or file name for heap dump.
-XX:-PrintConcurrentLocks :Print java.util.concurrent locks in Ctrl-Break thread dump.
-XX:-PrintCommandLineFlags :Print flags that appeared on the command line.

五、關於性能

-Xprof
-Xrunhprof

六、類加載和卸載的信息

Xbootclasspath :指定需要加載,但不想通過校驗類路徑。
JVM會對所有的類在加載前進行校驗並為每個類通過一個int數值來應用
-XX:+TraceClassLoading :跟蹤類加載的信息(診斷內存泄露很有用)
-XX:+TraceClassUnloading :跟蹤類卸載的信息(診斷內存泄露很有用)

七、jvm測試案例

1)首先配置VM arguments

技術分享

2)案例

技術分享

3)運行程序後,GC日誌就可以打印出來了

技術分享

DefNew(年輕代)
年輕代分三個區。一個Eden區,兩個Survivor區。大部分對象在Eden區中生成。當Eden區滿時,還存活的對象將被復制到Survivor區(兩個中的一個),當這個Survivor區滿時,此區的存活對象將被復制到另外一個Survivor區,當這個Survivor區也滿了的時候,從第一個Survivor區復制過來的並且此時還存活的對象,將被復制“年老區(Tenured)”。需要註意,Survivor的兩個區是對稱的,沒先後關系,所以同一個區中可能同時存在從Eden復制過來對象,和從前一個Survivor復制過來的對象,而復制到年老區的只有從第一個Survivor區過來的對象。而且Survivor區總有一個是空 的。
Tenured(年老代)
年老代存放從年輕代存活的對象。一般來說年老代存放的都是生命期較長的對象。
Perm(持久代)
用於存放靜態文件,持久代對垃圾回收沒有顯著影響,持久代大小通過-XX:MaxPermSize=<N>進行設置。

Jvm參數配置