记一次jvm内存不足分析

这两天突然告知说某个新上的服务日志提示内存不足。本来服务器已经有多个服务了,决定新建服务器解决,不过按业务量和服务的逻辑来讲不应该内存不足。遂分析如下。

一、准备工具

本人不是专业的,上网查资料,搜集可用工具和命令。因为服务器远程连接麻烦,所以最后锁定命令。
1、内存占用高的进程命令
top + shift p -->cpu
top + shift m -->memory
top -H -p pid

2、jvm内存情况
jmap -heap pid
jmap -histo:live pid |head -n 10

3、线程情况
jstack pid > vm.log

二、过程

1、查看服务器内存情况
free -m
发现可用不足,cache过高,正常,有频繁的文件读写。centos没有搜到自动清理。只能手工清理。此为原因1:需要定期释放cache。

2、查看进程的内存情况。
top + shift m
发现其中一个服务的res占用高。搜索说就是内存使用高。这个需要进一步查。

jmap -heap pid
发现某个服务的堆内存配置较小。此处为问题原因2:测试环境的启动参数未修改直接上生产。

3、继续查看内存使用高的进程被那个线程使用。
查看内存高的线程
top -H -p pid
shift m

输出线程信息
jstack pid >vm.log
vi vm.log
搜索 线程pid的16进制,搜索pakage的orgid,没有结果。
后面研究看看res到底去哪了。

三、解决

1、修改jvm启动参数
-xms -xmx

2、增加定时任务清除cache

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值