2018-09-03 KK日记,记一次JVM内存使用过多的诊断

本文记录了一次JVM内存使用超过90%的问题排查过程。通过使用jstat和jmap等工具收集并分析内存使用情况,定位到具体内存占用高的对象,并最终通过重启服务解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、案例

某日,收到告警“KK服务器JVM内存使用超过90%”。

二、问题

为什么KK服务器JVM内存使用超过90%?

三、数据收集与分析

3.1 收集当前JVM内存使用率

  • jstat -gccapacity <进程号> 2s
  • or
  • jmap -heap <进程号>

除了现场收集外,也可以配置到监控平台上收集告警。

3.2 生成JVM 内存的dump文件

  • jmap -dump:live,format=b,file=/path/file.dump [pid]

3.3 分析JVM内存的dump文件

  • 使用ibm heapanalyzer工具进行分析

在reference里看到,java/lang/Thread方法占用98.75%的内存,进一步展开,就可以看到一个char[]的类型,在右手边看到CHAR[]详细内容:PROMOTION xxxx IS NO AVALIABLE. 怀疑出现应用代码无法处理的数据。

四、行动

  • 联系开发员检查代码
  • 重启使用该JVM的应用服务,恢复正常。

五、结论

基于JVM运行的服务,一定要熟悉JVM的运行机制及常用诊断工具和方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值