java内存泄露分析定位

Posted light-zhang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java内存泄露分析定位相关的知识,希望对你有一定的参考价值。

  线上服务模块CPU和RAM内存都出现了异常,记录一下自己的分析过程:

     1.确定线上环境os是linux-debian9.3

     2.确定web容器采用的是jetty9.4版本

     3.先用top分析当前系统内存和cpu的占用情况

       1)先top,然后m切换内存使用情况图表

top - 11:31:03 up 2 days, 14:51,  2 users,  load average: 21.71, 20.58, 19.47
Tasks: 161 total,   1 running, 160 sleeping,   0 stopped,   0 zombie
%Cpu(s): 25.6 us, 43.3 sy,  0.0 ni, 31.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 91.5/16305244 [||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||        ]
KiB Swap:  0.0/16777212 [                                                                                                    ]

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                        
 5295 root      20   0 9937420 878068  18684 S 128.0  5.4  52:31.03 java                                                                                                                                           
 5512 root      20   0 9778.5m 887436  17816 S 128.0  5.4   4505:13 java                                                                                                                                           
 4261 root      20   0 9994704 1.513g  18272 S 127.7  9.7   4512:04 java                                                                                                                                           
 3326 root      20   0 9831.6m 1.540g  18244 S 118.7  9.9   4501:25 java                                                                                                                                           
 3751 root      20   0 9851.2m 1.087g  18532 S   0.7  7.0  23:09.35 java                                                                                                                                           
 5740 root      20   0 8865332 740708  17792 S   0.3  4.5   3:08.60 java                                                                                                                                           
14968 root      20   0   44948   3748   3080 R   0.3  0.0   0:00.07 top                                                                                                                                            
    1 root      20   0  204376   5740   4348 S   0.0  0.0   0:03.93 systemd                                                                                                                                        
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kthreadd                                                                                                                                       
    3 root      20   0       0      0      0 S   0.0  0.0   0:00.58 ksoftirqd/0                                                                                                                                    
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H                                                                                                                                   
    7 root      20   0       0      0      0 S   0.0  0.0   1:19.28 rcu_sched                                                                                                                                      
    8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh                                                                                                                                         
    9 root      rt   0       0      0      0 S   0.0  0.0   0:00.10 migration/0                                                                                                                                    
   10 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 lru-add-drain                                                                                                                                  
   11 root      rt   0       0      0      0 S   0.0  0.0   0:00.26 watchdog/0                                                                                                                                     
   12 root      20   0       0      0      0 S   0.0  0.0   0:00.00 cpuhp/0                                                                                                                                        
   13 root      20   0       0      0      0 S   0.0  0.0   0:00.00 cpuhp/1                                                                                                                                        
   14 root      rt   0       0      0      0 S   0.0  0.0   0:00.22 watchdog/1                                                                                                                                     
   15 root      rt   0       0      0      0 S   0.0  0.0   0:00.09 migration/1                                                                                                                                    
   16 root      20   0       0      0      0 S   0.0  0.0   0:00.51 ksoftirqd/1                                                                                                                                    
   18 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/1:0H                                                                                                                                   
   19 root      20   0       0      0      0 S   0.0  0.0   0:00.00 cpuhp/2                                                                                                                                        
   20 root      rt   0       0      0      0 S   0.0  0.0   0:00.21 watchdog/2                                                                                                                                     
   21 root      rt   0       0      0      0 S   0.0  0.0   0:00.08 migration/2                                                                                                                                    
   22 root      20   0       0      0      0 S   0.0  0.0   0:00.50 ksoftirqd/2                                                                                                                                    
   24 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/2:0H                                                                                                                                   
   25 root      20   0       0      0      0 S   0.0  0.0   0:00.00 cpuhp/3                                                                                                                                        
   26 root      rt   0       0      0      0 S   0.0  0.0   0:00.20 watchdog/3                                                                                                                                     
   27 root      rt   0       0      0      0 S   0.0  0.0   0:00.09 migration/3                                                                                                                                    
   28 root      20   0       0      0      0 S   0.0  0.0   0:00.51 ksoftirqd/3                                                                                                                                    
   30 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/3:0H                                                                                                                                   
   31 root      20   0       0      0      0 S   0.0  0.0   0:00.00 cpuhp/4                                                                                                                                        
   32 root      rt   0       0      0      0 S   0.0  0.0   0:00.21 watchdog/4                                                                                                                                     
   33 root      rt   0       0      0      0 S   0.0  0.0   0:00.10 migration/4                                                                                                                                    
   34 root      20   0       0      0      0 S   0.0  0.0   0:00.38 ksoftirqd/4                                                                                                                                    
   36 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/4:0H                                                                                                                                   
   37 root      20   0       0      0      0 S   0.0  0.0   0:00.00 cpuhp/5                                                                                                                                        
   38 root      rt   0       0      0      0 S   0.0  0.0   0:00.20 watchdog/5                                                                                                                                     
   39 root      rt   0       0      0      0 S   0.0  0.0   0:00.10 migration/5                                                                                                                                    
   40 root      20   0       0      0      0 S   0.0  0.0   0:00.35 ksoftirqd/5                                                                                                                                    
   42 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/5:0H                                                                                                                                   
   43 root      20   0       0      0      0 S   0.0  0.0   0:00.00 cpuhp/6                                                                                                                                        
   44 root      rt   0       0      0      0 S   0.0  0.0   0:00.20 watchdog/6                                                                                                                                     
   45 root      rt   0       0      0      0 S   0.0  0.0   0:00.10 migration/6                                                                                                                                    
   46 root      20   0       0      0      0 S   0.0  0.0   0:00.40 ksoftirqd/6   

4.分析最占内存的web服务

 1)top 然后在输入大写M自动根据内存的大小排序

 2)top 然后在输入大写P自动根据CPU使用的情况排序


5.查询到进程信息后,获取到当前的进程PID

  

 4261 root      20   0 9994704 1.513g  18272 S 127.7  9.7   4512:04 java                                                                                                                                           

6.根据PID查询到WEB服务对应的端口信息,然后就知道了4261对应的web服务端口为9180

  命令:

输入指令:netstat -ntlp;
tcp        0      0 0.0.0.0:9180            0.0.0.0:*               LISTEN      4261/java   

7.然后通过java自带的工具来导出pid对应的dump文件信息  

输入指令:
jmap -dump:format=b,file=/home/ifaces/9180.dump 4261

8.将文件下载到本地分析,我使用的是debian开发环境,所以直接用sftp来下载文件:
 

输入指令:
sftp [email protected]123.xxx.150
输入密匙进入

9.将生成的dump下载到本地

sftp> get /home/ifaces/9180 /work/dump

10.然后在控制台输入 jvisualvm调用java自带的dump分析工具来分析dump的文件内容信息

输入指令:/workbench/visualvm_141/bin$ ./visualvm

11.利用jvisualvm就可以看到堆的信息了

 




以上是关于java内存泄露分析定位的主要内容,如果未能解决你的问题,请参考以下文章

5.JVM系列-堆内内存泄露案例分析解决

如何查看和调试动态链接库的内存泄露

PHP内存泄漏分析定位

PHP内存泄漏分析定位

chrome内存泄露怎么定位代码

记一次Java的内存泄露分析