JVM性能調優監控工具總結

JDK自己提供了不少方便的JVM性能調優監控工具,有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具.java

 

1.jps(Java Virtual Machine Process Status Tool)算法

最經常使用的就是 jps -mlvV數組

jps主要用來輸出JVM中運行的進程狀態信息。語法格式以下:瀏覽器

jps [options] [hostid]服務器

若是不指定hostid就默認爲當前主機或服務器。工具

命令行參數選項說明以下:佈局

-q 不輸出類名、Jar名和傳入main方法的參數性能

-m 輸出傳入main方法的參數命令行

-l 輸出main類或Jar的全限名線程

-v 輸出傳入JVM的參數

 

2.jstack

最經常使用的用法有兩種:

jstack 1234

jstack -m 1234 #native+java棧

 

jstack主要用來查看某個Java進程內的線程堆棧信息。語法格式以下:

jstack [option] pid

jstack [option] executable core

jstack [option] [server-id@]remote-hostname-or-ip

命令行參數選項說明以下:

-l long listings,會打印出額外的鎖信息,在發生死鎖時能夠用jstack -l pid來觀察鎖持有狀況

-m mixed mode,不只會輸出Java堆棧信息,還會輸出C/C++堆棧信息(好比Native方法)

jstack能夠定位到線程堆棧,根據堆棧信息咱們能夠定位到具體代碼,因此它在JVM性能調優中使用得很是多。

 

3.jinfo

最經常使用用法:jinfo -flags 1234

能夠輸出並修改運行時的java 進程的opts。用處比較簡單,就是能輸出並修改運行時的java進程的運行參數。用法是jinfo -opt pid 如:查看1234的MaxPerm大小能夠用 jinfo -flag MaxPermSize 1234

 

4.jmap(Memory Map)和jhat(Java Heap Analysis Tool)

最經常使用用法:

a.查看堆的狀況:jmap -heap 1234

b.dump:jmap -dump:live,format=b,file=/home/admin/logs/heap.bin 1234

或者:jmap -dump:format=b,file=/home/admin/logs/heap.bin 1234

c.查看堆被誰佔用了:jmap -histo 1234 | head -10

再結合btrace的分析

 

jmap用來查看堆內存使用情況,通常結合jhat使用。

jmap語法格式以下:

jmap [option] pid

jmap [option] executable core

jmap [option] [server-id@]remote-hostname-or-ip

使用jmap -heap pid查看進程堆內存使用狀況,包括使用的GC算法、堆配置參數和各代中堆內存使用狀況。

使用jmap -histo[:live] pid查看堆內存中的對象數目、大小統計直方圖,若是帶上live則只統計活對象

其中class name是對象類型,說明以下:

B byte

C char

D double

F float

I int

J long

Z boolean

[ 數組,如[I表示int[]

[L+類名 其餘對象)

還有一個很經常使用的狀況是:用jmap把進程內存使用狀況dump到文件中,再用jhat分析查看。jmap進行dump命令格式以下:

jmap -dump:format=b,file=dumpFileName pid。注意若是Dump文件太大,可能須要加上-J-Xmx512m這種參數指定最大堆內存,即jhat -J-Xmx512m -port 9998 /tmp/dump.dat。而後就能夠在瀏覽器中輸入主機地址:9998查看了

 

5.jstat

jstat參數不少,最經常使用的是 jstat -gcutil 1234 1000

先看JVM堆內存佈局:

堆內存 = 年輕代 + 年老代 + 永久代

年輕代 = Eden區 + 兩個Survivor區(From和To)

如今來解釋各列含義:

S0C、S1C、S0U、S1U:Survivor 0/1區容量(Capacity)和使用量(Used)

EC、EU:Eden區容量和使用量

OC、OU:年老代容量和使用量

PC、PU:永久代容量和使用量

YGC、YGT:年輕代GC次數和GC耗時

FGC、FGCT:Full GC次數和Full GC耗時

GCT:GC總耗時

相關文章
相關標籤/搜索