1. 程式人生 > >jvm工具介紹和效能調優

jvm工具介紹和效能調優

jvm工具

https://docs.oracle.com/javase/8/docs/technotes/tools/unix/

  • Jps
  • Jstat
  • Jinfo
  • Jmap
  • Jhat
  • Jstack
  • JConsole

Jps (Java process status Java)程序狀態 使用頻率最高的

    • 本地虛擬機器唯一id lvmid local virtual machine id
    • jps -m 執行時傳入主類的引數
    • jps -v 虛擬機器引數
    • jps -l 執行的主類全名或者jar包名稱

Jstat

檢視類裝載,記憶體,垃圾收集,jit編譯的資訊

詳細資訊可以參見:

https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstat.html

jstat -gcutil pid:檢視某個Java程序的gc情況

S0:年輕代中一個survivor的容量(位元組)

S1:年輕代中二個survivor的容量(位元組)

E:年輕代中Eden的容量(位元組)

O:old的的容量

M:matespace(元空間)

CCS:壓縮類的空間

YGC:從應用程式啟動到取樣時年輕代中gc的次數

YGCT:從應用程式啟動到取樣時年輕代中gc的次數所用的時間(s)

FGC:從應用程式啟動到取樣時老年代(full gc)中gc的次數

FGCT:從應用程式啟動到取樣時老年代(full gc)中gc的次數所用的時間(s)

GCT:從應用程式啟動到取樣時gc用的總時間

Jinfo

檢視java 虛擬機器引數

jinfo -flag UseSerialGC pid 檢視虛擬機器引數的狀態

檢視當前jvm所用的是否是serial的gc.

Jmap

生成堆儲存快照的工具

jmap -dump:format=b,file=d:\a.bin 1016

馬上匯出當前的Java堆儲存快照資訊

當設定了虛擬機器的引數:-XX:+HeapDumpOnOutOfMemoryError

JVM會在遇到OutOfMemoryError時拍攝一個“堆轉儲快照”,並將其儲存在一個檔案中。

而jmap的jmap -dump的轉堆儲存快照的功能和上面的引數設定的實現的功能是一致的。

jmap -histo 1016 | more 檢視堆中的物件資訊

Jhat(jvm heap analysis tool)

java堆的分析工具(不常使用)

Jstack

生成每一個執行緒快照(可以根據快照分析執行緒是否出現了問題)

在程式碼中可以使用Thread.getAllStackTraces(),這個方法獲取專案中所有執行緒的相關資訊,返回的是一個map集合。

JConsole

圖形化工具

 

VisualVM 最強大的監控工具

外部工具

https://visualvm.github/pluginscenters.html