sh-4.2# top
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 5866 root 20 0 16.3g 4.7g 17512 S 318.8 30.0 244:48.56 java
5866是CPU最高的进程PID
sh-4.2# top -Hp 5866
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5871 root 20 0 16.3g 4.7g 17512 S 79.0 30.0 68:29.22 java
5874 root 20 0 16.3g 4.7g 17512 S 79.0 30.0 68:28.19 java
5872 root 20 0 16.3g 4.7g 17512 S 78.7 30.0 68:28.53 java 5873 root 20 0 16.3g 4.7g 17512 S 78.0 30.0 68:29.42 java
转5871、5872、5873、5874 为十六进制
sh-4.2# printf "%x\n" 5871
16ef
sh-4.2# printf "%x\n" 5872
16f0
sh-4.2# printf "%x\n" 5873
16f1
sh-4.2# printf "%x\n" 5874
16f2
sh-4.2# jstack 5866 | grep 16ef
"GC task thread#0 (ParallelGC)" os_prio=0 tid=0x00007f37a001f000 nid=0x16ef runnable
sh-4.2# jstack 5866 | grep 16f0
"GC task thread#1 (ParallelGC)" os_prio=0 tid=0x00007f37a0020800 nid=0x16f0 runnable
sh-4.2# jstack 5866 | grep 16f1
"GC task thread#2 (ParallelGC)" os_prio=0 tid=0x00007f37a0022800 nid=0x16f1 runnable
sh-4.2# jstack 5866 | grep 16f2
"pool-2-thread-8838" #8847 prio=5 os_prio=0 tid=0x00007f37a16f2000 nid=0x3988 waiting for monitor entry [0x00007f3608653000]
"GC task thread#3 (ParallelGC)" os_prio=0 tid=0x00007f37a0024000 nid=0x16f2 runnable
注意十六进制主要对应线程中的nid=0x16f2 等等
这个四个线程全部分GC线程;
每间隔200毫秒,20次输出GC信息
sh-4.2# jstat -gcutil 5866 200 20
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
0.00 0.00 100.00 99.99 94.61 85.34 60 5.327 4060 5310.853 5316.180
0.00 0.00 100.00 99.99 94.61 85.34 60 5.327 4061 5312.203 5317.530
0.00 0.00 100.00 99.99 94.61 85.34 60 5.327 4062 5313.510 5318.837
0.00 0.00 100.00 99.99 94.61 85.34 60 5.327 4063 5314.833 5320.160
S0 — Heap上的 Survivor space 0 区已使用空间的百分比
S1 — Heap上的 Survivor space 1 区已使用空间的百分比
E — Heap上的 Eden space 区已使用空间的百分比
O — Heap上的 Old space 区已使用空间的百分比
P — Perm space 区已使用空间的百分比
YGC — 从应用程序启动到采样时发生 Young GC 的次数
YGCT– 从应用程序启动到采样时 Young GC 所用的时间(单位秒)
FGC — 从应用程序启动到采样时发生 Full GC 的次数
FGCT– 从应用程序启动到采样时 Full GC 所用的时间(单位秒)
GCT — 从应用程序启动到采样时用于垃圾回收的总时间(单位秒)
查看堆信息
sh-4.2# jmap -heap 5866
Attaching to process ID 5866, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.221-b11
using thread-local object allocation.
Parallel GC with 4 thread(s)
Heap Configuration:
MinHeapFreeRatio = 0
MaxHeapFreeRatio = 100
MaxHeapSize = 4192206848 (3998.0MB)
NewSize = 87031808 (83.0MB)
MaxNewSize = 1397227520 (1332.5MB)
OldSize = 175112192 (167.0MB)
NewRatio = 2
SurvivorRatio = 8
MetaspaceSize = 21807104 (20.796875MB)
CompressedClassSpaceSize = 1073741824 (1024.0MB)
MaxMetaspaceSize = 17592186044415 MB
G1HeapRegionSize = 0 (0.0MB)
Heap Usage:
PS Young Generation
Eden Space:
capacity = 466092032 (444.5MB)
used = 466092024 (444.49999237060547MB)
free = 8 (7.62939453125E-6MB)
99.99999828360077% used
From Space:
capacity = 368050176 (351.0MB)
used = 0 (0.0MB)
free = 368050176 (351.0MB)
0.0% used
To Space:
capacity = 465567744 (444.0MB)
used = 0 (0.0MB)
free = 465567744 (444.0MB)
0.0% used
PS Old Generation
capacity = 2794979328 (2665.5MB)
used = 2794879000 (2665.4043197631836MB)
free = 100328 (0.09568023681640625MB)
99.99641042067843% used
3864 interned Strings occupying 292592 bytes.
jmap -dump:format=b,file=filename 进程ID
快照jvm内存
jmap -dump:live,format=b,file=live_web_dump.hprof 5866
通过eclipse的mat工具分析哪些对象比较