记录一次内存溢出解决过程(java.lang.OutOfMemoryError: Java heap space)

用户反馈服务页面数据刷不出来 登录服务器查看内存和cpu使用情况 发现可用内存几乎没有

查看服务器日志发现大量内存溢出报错

ps -ef|grep java 查看服务器进程id

 使用  ./jstat -gcutil -h20 8124 1000命令查看GC情况

此图为问题修复后的截图,当时服务器FGC数据狂增 每秒增加2次的频率

查看java进程内存使用情况

(此图为问题修复后的截图 只是为了展示命令显示内容)

 使用 jmap -dump:format=b,file=/zhmh/project/isee/jmap_heapdump.hprof <pid>命令dump服务内存使用快照

使用eclipse  memory工具打开hprof文件

  猜测有可能是tomcat接受http请求缓存问题

网上搜索关键字 24 instances of “org.apache.coyote.http11.Http11OutputBuffer”

查看代码里面的配置 确实有问题 设置缓冲为30m

 

这个缓冲区的大小是固定的 不是动态扩展的

修改缓冲区大小为1m然后发布服务

观察服务器内存使用情况

 

 原来java进程占用内存的比例达到32% 而启动命令里面设置最大内存大小为2G 所以发生了一直内存溢出

查看Java进程内部使用情况

观察GC情况,发现GC情况已经稳定 FGC已经不在频繁触发

常用命令

/zhmh/java/jdk1.8.0_144/bin/jmap -heap 8124  查看堆使用情况

jmap -histo 5352   查看类统计信息

top -p 8124 查看Java进程占用cpu内存使用情况

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值