linux java内存溢出_技术文档(12)-- linux解决java内存溢出问题总结

最近项目中遇到内存溢出问题,随着程序的运行,内存只增不减,最终达到系统内存最大值,总结了一下解决此问题的过程

1,top 查看java程序的pid 吃内存比较大的进程 ,然后通过jps 查看具体哪个java服务程序的pid

2,jmap -histo:live pid > pid.txt  此命令可以查看当前java程序中内个对象的数量和占用空间

ps:也可以通过jmap -histo pid | head -n10 查看前10行的值

926f47f956bd8a94dfb9e4ca7855a07c.png

69064129

69064129

通过查看获取到[C代表Char ,从此图可以看到当前String占用很多

3,上图还是分析不出来哪个对象占用的多,需要借助

jmap -dump:format=b,file=a.txt pid

jhat -J-Xmx1024M a.txt

453b86bf7dbd1b750a23c88ad4c0965a.png

上面两个命令可以以页面的形式查看java程序内的内存分配情况

4,可以通过ip:7000访问此java内存的页面,

5,通过以上分析出,我的User对象没有释放,导致User引用的所有对象都常驻内存,导致内存溢出,找到最下方的other query

进入 Show heap histogram

通过instance count 对比找出自己怀疑的异常对象,一般是自己包名下的类

通过References to this object 找出引用此对象的object,我通过此过程找到了内存不释放的原因

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值