java代码内存消耗过高排查思路
有一台应用服务器的内存消耗加大,warnings;上去登录看看,top查看一下内存消耗最大的是java代码;和我的数据库没有啥关系,好奇心促使我
继续探究下去看看咋回事
top结果图如下
通过ps命令可以查到具体进程的CPU占用情况,但是不能查到一个进程下具体线程的内存占用情况ps -mp 2954 -o THREAD,tid,time,rss,size,%mem
那么通过jmap命令去核实一下(注意:此工具使用时,官方文档查询使用注意事项)
jmap -histo:live 2954 > /tmp/static.log 分析日志发现是char ,bytes占用大量的内存
jmap -dump:live,format=b file=/tmp/dump.log 2954利用mat工具分析内存情况,至此,我把相关信息收集完毕交由开发人员去处理问题