java 内存泄露 定位_java内存泄露分析定位

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

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

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

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

先查看下是否有缓存占用了物理内存

输入指令: free -h

total used free shared buff/cache available

Mem: 11G 10G 168M 510M 926M 316M

Swap:7.9G 502M 7.4G

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

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

KiB Mem :91.5/16305244 [||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||]

KiB Swap:0.0/16777212[ ]

PID USER PR NI VIRT RES SHR S%CPU %MEM TIME+COMMAND5295 root 20 0 9937420 878068 18684 S 128.0 5.4 52:31.03java5512 root 20 0 9778.5m 887436 17816 S 128.0 5.4 4505:13java4261 root 20 0 9994704 1.513g 18272 S 127.7 9.7 4512:04java3326 root 20 0 9831.6m 1.540g 18244 S 118.7 9.9 4501:25java3751 root 20 0 9851.2m 1.087g 18532 S 0.7 7.0 23:09.35java5740 root 20 0 8865332 740708 17792 S 0.3 4.5 3:08.60java14968 root 20 0 44948 3748 3080 R 0.3 0.0 0:00.07top1 root 20 0 204376 5740 4348 S 0.0 0.0 0:03.93systemd2 root 20 0 0 0 0 S 0.0 0.0 0:00.00kthreadd3 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:0H7 root 20 0 0 0 0 S 0.0 0.0 1:19.28rcu_sched8 root 20 0 0 0 0 S 0.0 0.0 0:00.00rcu_bh9 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-drain11 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:0H19 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:0H25 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:0H31 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:0H37 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:0H43 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:04java

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 root@xxx.123.xxx.150输入密匙进入

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

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

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

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

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

2389531df27806bec70005e20543d44a.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值