天天看點

JVM常用指令行工具學習總結

1, 設定OOM時dump heap:

    -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/tomcat/logs

2, 設定列印GC資訊:

    -XX:+PrintGCDetails -Xloggc:/opt/tomcat/logs/gc.log

3, 檢視java程序:

    jps -v // -v表示輸出jvm啟動時的參數

4, 線上dump heap,用到了jmp指令:

    jmap -dump:format=b,file=7680.hprof 7680  //7680為java程序ID

5, 檢視java程序執行個體對象數量以及大小,也是jmap:

    jmap -histo 7680

    輸出示例如下:

    num    #instances    #bytes       class name

    1:       1732667      149468304   [C

    2:         209826      136432064   [B

    3:         364780        53321016   com.zws.beans.User

Total:     9076919      717049952

6, 擷取java程序的線程狀态:

    jstack -l 7680 > 7680.stack

7, jstat檢視Java程序各個記憶體區域的使用占比情況:

    jstat -gcutil 7680

    示例輸出:

    S0       S1      E       O        P        YGC    YGCT    FGC     FGCT     GCT

    75.02  0.00   3.34  41.42  99.92  388     15.379   0           0.000     15.379

    其中:

    S0 S1:Survivor0,Survivor1空間占百分比。  

    E:Eden空間使用所占百分比。

    O:老年代空間使用所占百分比。

    P:永久代空間使用所占百分比。

    YGC:自從程序啟動以來發生的Minor GC次數(YGC表示Young GC)。

    YGCT:自從程序啟動以來發生的Minor GC總耗時(秒)。

    FGC:自從程序啟動以來發生的Full GC次數。

    FGCT:自從程序啟動以來發生的Full GC總耗時(秒)。

    GCT:自從程序啟動以來所有GC總耗時(秒)。

8, 檢視最近一次GC的原因:

    jstat -gccause 4882

    S0       S1     E        O         P        YGC    YGCT     FGC     FGCT     GCT       LGGC                     GCC

    75.02  0.00  3.34   41.42   99.92  388     15.379     0        0.000      15.379    Allocation Failure   No GC

    LGGC:最近一次GC的原因。