内存溢出问题解决思路

内存溢出问题解决

一、常规解决思路

  1. 首先、在JVM参数配置时需要配置内存溢出后dump出内存的快照来,配置如下:
    -XX:HeapDumpOnOutOfMemoryError
    -XX:HeapDumpPath=内存快照.hprof输出路径

  2. 然后、导出.hprof,放到分析工具里面分析内存溢出的原因

  3. 最后、通过调整JVM参数或者修复内存泄漏的代码来修复问题。

二、问题的发现
首先进入到容器查看JVM参数配置片段如下:

-XX:HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/dcs/home/.dependecy-check/dump/

可以看到内存溢出后的快照放在/dcs/home/.dependecy-check/dump/路径下面
进入到该路径,下面有一个
xxxxx.hprof文件

将这个xxxxx.hprof文件从容器导出到本地

kubectl cp statefule-0:/dcs/home/.dependecy-check/dump/xxxxx.hprof /tmp/dcs.hprof

将.hprof文件通过mat工具打开(也可以通过其他工具打开)
概览:
在这里插入图片描述
可以看到上面有一个399MB的对象。

stacktrace如下:
在这里插入图片描述

可以看到在做git clone时发生内存溢出。

通过jmap命令可以看到容器的内存状况
在这里插入图片描述

日常情况下,JVM的内存情况还是比较正常的,但是对内存设置为512M,可能是由于堆内存设置过小,单个文件占用内存过多导致的内存溢出。

问题解决
调整JVM内存大小为2G,通过jmap查看到的信息,老年代设置的特别小只有2M,在调整内存参数时一起做了调整如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值