1. 程式人生 > 其它 >JVM調優(六)

JVM調優(六)

一、常見垃圾回收器組合引數設定

1、-XX: UseConcMarkSweepGC = ParNew + CMS + Serial Old

2、-XX: Use[arallelGC = Parallel Scavenge + Parallel Old(1.8預設)【PS + SerialOld】

3、UseParallelOldGC = Parallel Scavenge + Parallel Old

4、UseG1GC = G1

二、瞭解JVM常用命令列引數

1、標準:-開頭,所有Hotspot

   非標準:-X開頭,特定版本HotSpot支援特定命令

   不穩定:-XX開頭,下個版本可能取消

  可以通過:java -XX:+PrintFlagsFinal() -version | grep CMS命令查詢JVM引數

2、常用命令

記憶體洩漏:某個物件佔用記憶體空間無法被回收  記憶體溢位:記憶體中所有的物件所佔用的總空間超過實體記憶體空間

①java -XX:+PrintCommandLineFlags HelloGC

-XX:InitialHeapSize     -XX:MaxHeapSize     -XX:+PrintCommandLineFlags     -XX:+UseCompressedClassPointers     -XX:+UseCompressedOops

初始堆記憶體                  最大堆記憶體                 檢視程式使用的預設的JVM引數   Pointers引數保持與Oops引數相同的狀態,Oops開啟時型別指標為4位元組,關閉時為8位元組

②java -Xmn10M -Xms40M -Xmx60M -XX:+PrintCommandLineFlags -XX:+PrintGC HelloGC

           新生代      最小堆      最大堆大小

實際環境中最大堆與最小堆記憶體一般設定相同大小,避免彈性壓縮。彈性壓縮:當記憶體大小超過最小堆後,彈到最大堆中,當最小堆有空閒記憶體時,從最大堆彈出物件到最小堆

GC命令:PrintGCDetails列印GC詳細資訊  PrintGCTimeStamps列印GC時間  PrintGCCauses列印GC產生的原因

MaxNewSize:最大年輕代大小  NewSize:其實年輕代大小

③java -XX:+UseConcMarkSweepGC -XX:+PrintCommandLineFlags HelloGC

④java -XX:+PrintFlagsInitial 預設引數值

⑤java -XX:+PrintFlagsFinal 最終引數值

⑥java -XX:+PrintFlagsFinal | grep xxx找到對應引數

⑦java -XX:+PrintFlagsFinal -version | grep GC

三、GC日誌詳解