一次java内存top res高排查记录

9 篇文章 0 订阅
3 篇文章 0 订阅
本文记录了一次Java进程内存资源(res)异常增长的排查过程。通过top命令观察到进程内存持续升高,但jmap dump出来的堆内存并无明显泄漏。进一步分析发现,问题可能出在堆外内存。尝试使用NMT进行 native 内存跟踪,但由于使用的是JDK 1.6而不支持。接着,通过ps、pmap等工具分析,最终在gdb中发现内存中存储了未正常关闭的请求和响应数据,怀疑存在资源未释放的问题。
摘要由CSDN通过智能技术生成

前言

分享一个最近的问题,top 看java进程res不断升高,一天能涨3个G,使用jmap dump内存快照后,dump下来的文件只有300多M,没有发现内存泄漏。这是个什么情况呢,我们深入分析下。

冰山一角

首先,使用top来查看下当前进程的信息

图片

请添加图片描述

可以看到top的res占用5.3g,jvm的参数如下

-Xmx8192M -Xms8192M -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCDetails -XX:+PrintGCDateStamps -verbose:gc -Xloggc:/opt/ass/gc.log

早上的时候是4个g,下午的时候涨到7个g。

通过gc日志和gc次数和时间来看,fullgc并没有有效的清理掉内存。

我们使用jmap -histo:live pid手动触发一次fullgc,发现res还在持续增长,也就是说内存肯定有泄漏的地方。

使用jmap dump出内存,查看泄漏的地方</

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

死磕音视频

你的打赏是我分享的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值