1. 程式人生 > >Java內建常用記憶體分析工具使用教程

Java內建常用記憶體分析工具使用教程

jstack


列印記憶體使用情況

jstat -gc 25221 1000 60

取樣

 S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT
16896.0 26624.0  0.0    0.0   390656.0 320417.8  94720.0    32012.7   35496.0 34784.0 4400.0 4150.3     10    0.199   2      0.146    0.344
16896.0 26624.0  0.0    0.0   390656.0 320417.8  94720.0    32012.7   35496.0 34784.0 4400.0 4150.3     10    0.199   2      0.146    0.344
16896.0 26624.0  0.0    0.0   390656.0 320417.8  94720.0    32012.7   35496.0 34784.0 4400.0 4150.3     10    0.199   2      0.146    0.344
16896.0 26624.0  0.0    0.0   390656.0 320417.8  94720.0    32012.7   35496.0 34784.0 4400.0 4150.3     10    0.199   2      0.146    0.344
16896.0 26624.0  0.0    0.0   390656.0 320417.8  94720.0    32012.7   35496.0 34784.0 4400.0 4150.3     10    0.199   2      0.146    0.344
16896.0 26624.0  0.0    0.0   390656.0 320417.8  94720.0    32012.7   35496.0 34784.0 4400.0 4150.3     10    0.199   2      0.146    0.344
jstat -compiler 17970

取樣

Compiled Failed Invalid   Time   FailedType FailedMethod
    4316      0       0    29.73          0

jstat -class 25221 1000 60

取樣

Loaded  Bytes  Unloaded  Bytes     Time
  7819 16075.0        0     0.0      12.90
  7819 16075.0        0     0.0      12.90
  7819 16075.0        0     0.0      12.90
  7819 16075.0        0     0.0      12.90
  7819 16075.0        0     0.0      12.90

位元組碼檔案解析

javap -verbose ConfigConstant.class

動態顯示JVM中記憶體使用情況

jstat -gcutil 1159 3000 60

取樣

S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT
0.00   0.00  74.18  33.80  97.99  94.32     10    0.199     2    0.146    0.344
0.00   0.00  74.18  33.80  97.99  94.32     10    0.199     2    0.146    0.344
0.00   0.00  74.18  33.80  97.99  94.32     10    0.199     2    0.146    0.344
0.00   0.00  74.18  33.80  97.99  94.32     10    0.199     2    0.146    0.344
0.00   0.00  74.18  33.80  97.99  94.32     10    0.199     2    0.146    0.344
0.00   0.00  75.18  33.80  97.99  94.32     10    0.199     2    0.146    0.344
0.00   0.00  75.18  33.80  97.99  94.32     10    0.199     2    0.146    0.344
0.00   0.00  77.19  33.80  97.99  94.32     10    0.199     2    0.146    0.344

配置資訊

jmap -heap 1159

檢視各個類的例項數

jmap -histo 1159

取樣

 num     #instances         #bytes  class name
----------------------------------------------
   1:       1028563      139703824  [C
   2:        432882      102647352  [B
   3:         47202       63104768  [I
   4:        452434       10858416  java.lang.String
   5:         99499        8154264  [Ljava.lang.Object;
   6:         73227        5881088  [S
   7:         53191        4680808  java.lang.reflect.Method
   8:         41073        3715664  [Ljava.util.HashMap$Node;
   9:        123471        2963304  java.lang.StringBuilder
  10:         49516        2376768  java.util.HashMap

執行緒堆疊資訊

jstack 1159
2018-11-28 23:46:12
Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.152-b16 mixed mode):

"Attach Listener" #64 daemon prio=9 os_prio=31 tid=0x00007fd2fb370800 nid=0x7807 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"[email protected]" #59 daemon prio=5 os_prio=31 tid=0x00007fd2f9fdf000 nid=0x7603 in Object.wait() [0x000070000c2a3000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x000000079acf0840> (a java.util.TaskQueue)
	at java.util.TimerThread.mainLoop(Timer.java:552)
	- locked <0x000000079acf0840> (a java.util.TaskQueue)
	at java.util.TimerThread.run(Timer.java:505)

"Druid-ConnectionPool-Destroy-230485473" #58 daemon prio=5 os_prio=31 tid=0x00007fd2fa488000 nid=0x8103 waiting on condition [0x000070000c1a0000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
	at java.lang.Thread.sleep(Native Method)
	at com.alibaba.druid.pool.DruidDataSource$DestroyConnectionThread.run(DruidDataSource.java:2181)

其他

jmap -dump:format=b,file=jvm.log 1159 
jhat tomcat.bin