天天看點

java 分析工具_java分析工具

java分析工具

jinfo

jstat

jmap

jstack

1.jinfo

檢視java程序的擴充參數

-flag 檢視某個jvm參數

-flag +/- 動态開啟或關閉部分jvm參數

-flag name=value 修改部分jvm參數

flags 檢視所有jvm參數

-sysprops 檢視系統參數(System.getProperties())

①-flag 檢視某個jvm參數

java 分析工具_java分析工具

jvm參數

②flag +/- 動态開啟或關閉部分jvm參數

檢視可關閉或開啟的jvm參數

java -XX:+PrintFlagsFinal -version|grep manageable

java 分析工具_java分析工具

image.png

關閉某個程序的GC日志

java 分析工具_java分析工具

image.png

③ -flag name=value 修改部分jvm參數

java 分析工具_java分析工具

image.png

④flags 檢視所有jvm參數

java 分析工具_java分析工具

image.png

sysprops 檢視系統參數

java 分析工具_java分析工具

image.png

2. jstat (Java Virtual Machine statistics monitoring tool)虛拟機統計監控工具

檢視堆記憶體各部分使用量,加載類的數量

java 分析工具_java分析工具

jstat

option: 參數選項

-t: 可以在列印的列加上Timestamp列,用于顯示系統運作的時間

-h: 可以在周期性資料資料的時候,可以在指定輸出多少行以後輸出一次表頭

vmid: Virtual Machine ID( 程序的 pid)

interval: 執行每次的間隔時間,機關為毫秒

count: 用于指定輸出多少次記錄,預設則會一直列印

java 分析工具_java分析工具

image.png

options

說明

-class

顯示類加載相關資訊

-gc

垃圾回收統計

-gccapacity

堆記憶體統計

-gcnew

新生代垃圾回收統計

-gcnewcapacity

新生代記憶體統計

-gcold

老年代垃圾回收統計

-gcoldcapacity

老年代記憶體統計

-gcmetacapacity

中繼資料空間統計

-gcutil

顯示垃圾收集資訊

-gccause

顯示垃圾回收的相關資訊(通-gcutil),同時顯示最後一次或目前正在發生的垃圾回收的誘因

-compiler

顯示JIT編譯相關資訊

-printcompilation

輸出JIT編譯的方法資訊

① -class 類加載統計

java 分析工具_java分析工具

-class

參數

解釋

loaded

已加載的類數量

Bytes

所占空間大小

Unloaded

已解除安裝的類數量

Bytes

已解除安裝類的空間大小

Time

裝載類解除安裝類話費時間

② -gc垃圾回收統計

java 分析工具_java分析工具

image.png

參數

解釋

S0C

年輕代中第一個survivor的大小(位元組)

S1C

第二個survivor大小

S0U

第一個survivor已使用大小

S1U

第二個survivor已使用大小

EC

Eden總大小

EU

Eden已使用大小

OC

老年代大小

OU

老年代已使用大小

MC

metaspace(中繼資料空間)大小

MU

中繼資料已使用大小

CCSC

壓縮類空間大小

CCSU

壓縮類已使用空間大小

YGC

年輕代GC次數

YGCT

年輕代GC消耗時間(s)

FGC

老年代GC次數

FGCT

老年代GC消耗時間

GCT

GC總消耗時間

③-gccapacity 堆記憶體統計

java 分析工具_java分析工具

image.png

參數

說明

NGCMN

新生代最小容量

NGCMX

新生代最大容量

NGC

目前新生代容量

S0C

第一個survivor大小

S1C

第二個survivor大小

EC

Eden大小

OGCMN

老年代最小容量

OGCMX

老年代最大容量

OGC

老年代目前容量

OC

老年代容量

MCMN

metaspace最小容量

MCMX

metaspace最大容量

MC

metaspace目前大小

CCSMN

壓縮類空間最小容量

CCSMX

壓縮類空間最大容量

CCSC

壓縮類空間目前大小

YGC

新生代gc次數

FGC

老年代gc次數

④-gcnew 新生代gc統計

java 分析工具_java分析工具

image.png

參數

說明

S0C

第一個survivor大小

S1C

第二個survivor大小

S0U

第一個survivor已使用大小

S1U

第二個survivor已使用大小

TT

對象在新生代存活的次數???

MTT

對象在新生代存活的最大次數

DSS

期望的survivor大小???

EC

Eden大小

EU

Eden已使用大小

YGC

新生代gc次數

TGCT

新生代GC消耗時間

⑤-gcnewcapacity 新生代記憶體統計

java 分析工具_java分析工具

image.png

參數

說明

NGCMN

年輕代最小容量

NGCMX

年輕嗲最大容量

NGC

目前年輕代大小

S0CMX

survivor1最大容量

S0C

目前survivor1大小

S1CMX

survivor2最大容量

S1C

目前survivor2大小

ECMX

Eden最大容量

EC

目前Eden大小

YGC

年輕代GC次數

FGC

老年代GC次數

⑥-gcold 老年代gc統計

java 分析工具_java分析工具

image.png

參數

說明

MC

方法區(metaspace)大小

MU

metaspace已使用大小

CCSC

壓縮類空間大小

CCSU

壓縮類空間已使用大小

OC

老年代大小

OU

老年代已使用大小

YGC

年輕代GC次數

FGC

老年代GC次數

FGCT

老年代GC消耗時間

GCT

GC消耗總時間

⑦-gcoldcapacity 老年代記憶體統計

java 分析工具_java分析工具

image.png

參數

說明

OGCMN

老年代最小容量

OGCMX

老年代最大容量

OGC

目前老年代大小

OC

老年代大小

YGC

年輕代次數

FGC

老年代GC次數

FGCT

老年代GC消耗時間

GCT

GC總消耗時間

⑧-gcmetacapacity 中繼資料空間記憶體統計

java 分析工具_java分析工具

image.png

參數

說明

MCMN

metaspace最小容量

MCMX

metaspace最大容量

MC

目前metaspace大小

CCSMN

壓縮類空間最小容量

CCSMX

壓縮類空間最大容量

CCSC

目前壓縮類空間大小

YGC

年輕代GC次數

FGC

老年代GC次數

GCT

GC總消耗時間

⑨-gcutil gc統計

java 分析工具_java分析工具

image.png

參數

說明

S0

survivor1使用比率

S1

survivor2使用比率

E

Eden使用占Eden總容量的百分比

O

老年代使用比率

M

metaspace使用比率

CCSC

壓縮類空間使用比率

YGC

年輕代gc次數

YGCT

年輕代GC消耗時間

FGC

老年代GC次數

FGCT

老年代GC消耗時間

GCT

GC消耗總時間

⑩-gccause 顯示gc資訊,比-gcutil 多了一項 最後一次或目前發生GC的原因,

java 分析工具_java分析工具

image.png

參數

說明

LGCC

最後一次發生GC的原因

GCC

NoGC(目前沒有發生GC)

⑪ -compiler 顯示JIT編譯資訊

java 分析工具_java分析工具

image.png

參數

說明

Compoled

編譯任務執行數量

Failed

編譯任務執行失敗的數量

Invalid

編譯任務執行失效的數量

Time

編譯任務消耗時間

FailedType

最後一個編譯任務失敗的類型

FailedMethod

最後一個編譯任務失敗 所在的類及方法

⑫ -printcompilation 目前vm執行資訊

java 分析工具_java分析工具

image.png

參數

說明

Compiled

編譯任務執行數量

Size

方法生成的位元組碼大小

Type

編譯類型

Method

類名和方法名用來辨別編譯的方法。類名使用/做為一個命名空間分隔符。方法名是給定類中的方法。上述格式是由-XX:+PrintComplation選項進行設定的

3.jmap 檢視記憶體資訊

①檢視類執行個體數及占用記憶體大小

java 分析工具_java分析工具

image.png

log.txt 檔案内容如下

java 分析工具_java分析工具

image.png

②堆資訊

java 分析工具_java分析工具

image.png

java 分析工具_java分析工具

image.png

③堆記憶體dump

java 分析工具_java分析工具

image.png

也可以設定記憶體溢出自動導出dump檔案(記憶體很大的時候可能導不出來):

-XX:+HeapDumpOnOutOfMemory

-X:HeapDumpPath=./

java 分析工具_java分析工具

image.png

可以用jvisualvm指令工具導入該dump檔案分析

java 分析工具_java分析工具

image.png

jstack 堆棧跟蹤工具,生成目前時刻的線程快照

java 分析工具_java分析工具

image.png

可以使用jstack進行死鎖檢測

java 分析工具_java分析工具

死鎖

java 分析工具_java分析工具

image.png