怎样分析服务器的内存溢出文件,正式服务器内存溢出追踪原因并解决(OOM)

实际场景:正式服务器以前一直使用正常,今天突然报内存溢出,tomcat重启后还是内存溢出

bc218d9c071f57a04a4f2c41e7f33a63.png

原因定位记录:(注 下面截图都是正常情况下的截图)

1.top 查看 java pid

88531859b4cb32e3abf79dd297e6cb83.png

2.查看java堆详细信息 jmap -heap pid

Java程序在运行时,需要在内存中的分配空间。为了提高运算效率,就对数据进行了不同空间的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。

具体划分为如下5个内存空间:(非常重要)

栈:存放局部变量

堆:存放所有new出来的东西

方法区:被虚拟机加载的类信息、常量、静态常量等。

程序计数器(和系统相关)

本地方法栈

在这里就可以发现问题,通过优化虚拟机内存,

解决方法1:新增 setenv.sh

7d1362fbf5339fd6045145f26492f8c1.png

5c9cdbef00267c08a64e24fd4b1dce7d.png

因为我的是8核32G ,tomcat 启动内存就到了9G 还是内存溢出

所以伙这里配置16G ,重启tomcat 问题暂时解决。

6cae6d76b4dfa7bb9e40a14a266b0307.png

下面找出具体原因

3.成交案例堆中对象的统计信息 jmap -histo:live Pid

cd90c35f7072dc78b1be3e9dd371c720.png

4.打印类加载信息 jmap -clstats pid

51229c30674b2aafb45e8b7e2bccbc6b.png

5.查看等待终结的对象信息 jmap -finalizerinfo pid

![在这里插入图片描述](https://www.icode9.com/i/ll/?i=20200522085521464.png

fc9cc8070bfe86402b468bbe3cb94358.png

6.生成堆 dump 文件 jmap -dump:format=b,file=heapdump.hprof pid

9349ebdb791c4c34abc6dd26a5917d3e.png

7.导出到windows

8c36d745cd90ac48b5ee23bdf3a3d2dd.png

8.使用分析工具分析

8.1 jvisualvm --jdk自带

aacecaa01445432b4137e57f789719b6.png

58aad5a43557406c05d8b32d5cde4952.png

179a31944148f5832311df762dd26789.png

可以看到byte数组占用了接近JVM配置的最大堆的大小也就是95%,显然这是OOM的原因。

030c97bce2bf6e1e962979f7f4646cd9.png

第二步看一下究竟是哪些byte数组实例情况:

4513812dc53d43a88d90876813414250.png

到这来我就已经找到具体原因了maxHttpHeaderSize(tomcat service.xml配置参数),因为每个实例大约20M

7e90d353a213a643026b0f631fbaae02.png

8.2 分析工具2-Eclipse Memory Analyzer(MAT可以更详细,直观的找到内存溢出原因-可以图像画)

注:安装包我已经上传

1.点击文件导入

48a282e6a02e73da5d869064c81ce10a.png

通过类名看到是headerBuffer,还有output字眼,猜测这应该就是响应头的缓冲区,

de447c97fb3d06a76a24b849716984d8.png

希望可以帮到大家!绿光@664854541

标签:tomcat,OOM,pid,内存,服务器,jmap,溢出,原因

来源: https://blog.csdn.net/qq_38517630/article/details/106272288

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值