1.先top看一下那个进程占用内存比较高
[root@localhost ~]# top
top - 16:05:44 up 6 days, 4:47, 2 users, load average: 0.14, 0.31, 0.19
Tasks: 222 total, 1 running, 220 sleeping, 1 stopped, 0 zombie
Cpu(s): 8.5%us, 1.6%sy, 0.0%ni, 89.8%id, 0.1%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 32880492k total, 32648364k used, 232128k free, 2944k buffers
Swap: 8388604k total, 7544500k used, 844104k free, 175400k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
25642 root 20 0 8899m 2.1g 5960 S 69.2 6.7 353:44.38 java
19403 root 20 0 8006m 2.4g 6452 S 14.8 7.5 165:12.93 java
1 root 20 0 19364 336 148 S 0.0 0.0 12:03.16 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.24 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:04.09 migration/0
4 root 20 0 0 0 0 S 0.0 0.0 0:21.14 ksoftirqd/0
5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/0
6 root RT 0 0 0 0 S 0.0 0.0 0:00.97 watchdog/0
7 root RT 0 0 0 0 S 0.0 0.0 0:03.15 migration/1
8 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/1
9 root 20 0 0 0 0 S 0.0 0.0 0:21.97 ksoftirqd/1
10 root RT 0 0 0 0 S 0.0 0.0 0:00.91 watchdog/1
11 root RT 0 0 0 0 S 0.0 0.0 0:03.28 migration/2
12 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/2
13 root 20 0 0 0 0 S 0.0 0.0 0:18.77 ksoftirqd/2
14 root RT 0 0 0 0 S 0.0 0.0 0:00.91 watchdog/2
15 root RT 0 0 0 0 S 0.0 0.0 0:03.56 migration/3
16 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/3
17 root 20 0 0 0 0 S 0.0 0.0 0:13.56 ksoftirqd/3
18 root RT 0 0 0 0 S 0.0 0.0 0:00.77 watchdog/3
19 root RT 0 0 0 0 S 0.0 0.0 0:03.88 migration/4
20 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/4
21 root 20 0 0 0 0 S 0.0 0.0 0:13.13 ksoftirqd/4
22 root RT 0 0 0 0 S 0.0 0.0 0:01.04 watchdog/4
23 root RT 0 0 0 0 S 0.0 0.0 0:03.80 migration/5
24 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/5
25 root 20 0 0 0 0 S 0.0 0.0 0:14.59 ksoftirqd/5
26 root RT 0 0 0 0 S 0.0 0.0 0:01.07 watchdog/5
27 root RT 0 0 0 0 S 0.0 0.0 0:03.54 migration/6
28 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/6
29 root 20 0 0 0 0 S 0.0 0.0 0:19.83 ksoftirqd/6
30 root RT 0 0 0 0 S 0.0 0.0 0:00.96 watchdog/6
31 root RT 0 0 0 0 S 0.0 0.0 0:04.14 migration/7
32 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/7
2.再具体找出占用内存高的PID
[root@localhost ~]# top -p 25642
top - 16:15:28 up 6 days, 4:57, 2 users, load average: 0.63, 0.28, 0.20
Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
Cpu(s): 12.1%us, 1.9%sy, 0.0%ni, 86.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 32880492k total, 32654824k used, 225668k free, 4684k buffers
Swap: 8388604k total, 7552172k used, 836432k free, 180584k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
25642 root 20 0 8899m 2.1g 5960 S 92.6 6.7 359:07.63 java
然后按H
[root@localhost ~]# top -p 25642
top - 16:18:58 up 6 days, 5:01, 2 users, load average: 0.09, 0.18, 0.17
Tasks: 43 total, 0 running, 43 sleeping, 0 stopped, 0 zombie
Cpu(s): 9.0%us, 2.0%sy, 0.0%ni, 88.5%id, 0.4%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 32880492k total, 32655212k used, 225280k free, 5308k buffers
Swap: 8388604k total, 7555320k used, 833284k free, 182656k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
25727 root 20 0 8899m 2.1g 5960 S 494.7 6.7 0:14.87 java
25721 root 20 0 8899m 2.1g 5960 S 0.3 6.7 0:21.45 java
25642 root 20 0 8899m 2.1g 5960 S 0.0 6.7 0:00.00 java
25643 root 20 0 8899m 2.1g 5960 S 0.0 6.7 0:23.94 java
25644 root 20 0 8899m 2.1g 5960 S 0.0 6.7 3:57.76 java
25645 root 20 0 8899m 2.1g 5960 S 0.0 6.7 3:58.62 java
25646 root 20 0 8899m 2.1g 5960 S 0.0 6.7 3:56.09 java
25647 root 20 0 8899m 2.1g 5960 S 0.0 6.7 3:58.39 java
25648 root 20 0 8899m 2.1g 5960 S 0.0 6.7 3:56.52 java
25649 root 20 0 8899m 2.1g 5960 S 0.0 6.7 3:58.38 java
25650 root 20 0 8899m 2.1g 5960 S 0.0 6.7 3:57.39 java
25651 root 20 0 8899m 2.1g 5960 S 0.0 6.7 3:57.07 java
25652 root 20 0 8899m 2.1g 5960 S 0.0 6.7 21:12.95 java
25653 root 20 0 8899m 2.1g 5960 S 0.0 6.7 7:30.89 java
25654 root 20 0 8899m 2.1g 5960 S 0.0 6.7 8:58.03 java
25655 root 20 0 8899m 2.1g 5960 S 0.0 6.7 0:00.00 java
25656 root 20 0 8899m 2.1g 5960 S 0.0 6.7 0:47.30 java
25657 root 20 0 8899m 2.1g 5960 S 0.0 6.7 0:47.91 java
25658 root 20 0 8899m 2.1g 5960 S 0.0 6.7 0:50.87 java
25659 root 20 0 8899m 2.1g 5960 S 0.0 6.7 0:21.93 java
25660 root 20 0 8899m 2.1g 5960 S 0.0 6.7 0:00.00 java
25661 root 20 0 8899m 2.1g 5960 S 0.0 6.7 4:51.02 java
25664 root 20 0 8899m 2.1g 5960 S 0.0 6.7 0:00.31 java
25665 root 20 0 8899m 2.1g 5960 S 0.0 6.7 0:00.38 java
25705 root 20 0 8899m 2.1g 5960 S 0.0 6.7 0:16.86 java
25706 root 20 0 8899m 2.1g 5960 S 0.0 6.7 0:00.64 java
25707 root 20 0 8899m 2.1g 5960 S 0.0 6.7 0:00.51 java
25708 root 20 0 8899m 2.1g 5960 S 0.0 6.7 0:05.50 java
25709 root 20 0 8899m 2.1g 5960 S 0.0 6.7 0:02.07 java
25710 root 20 0 8899m 2.1g 5960 S 0.0 6.7 0:27.05 java
25711 root 20 0 8899m 2.1g 5960 S 0.0 6.7 0:28.03 java
25712 root 20 0 8899m 2.1g 5960 S 0.0 6.7 0:28.19 java
25713 root 20 0 8899m 2.1g 5960 S 0.0 6.7 0:27.74 java
25714 root 20 0 8899m 2.1g 5960 S 0.0 6.7 0:26.57 java
25715 root 20 0 8899m 2.1g 5960 S 0.0 6.7 0:29.39 java
[root@localhost ~]# printf "%x\n" 25727
647f
[root@OSS-ZYGL-121 ~]# jstack -l 25642 > jstack.log
[root@OSS-ZYGL-121 ~]# ls
anaconda-ks.cfg Disk_check.sh install.log install.log.syslog jstack.log
[root@OSS-ZYGL-121 ~]# vim jstack.log
注意:在执行 jstack -l 25642 > jstack.log 的时候可能会报错
1687: Unable to open socket file: target process not responding or HotSpot VM not loaded
The -F option can be used when the target process is not responding
[root@localhost hsperfdata_root]# jstack 25642 > /tmp/hsperfdata_root/25642.tdump
这里的进程ID是刚开始top的时候java的pid
然后再导出堆
jstat -gcutil 25642