读取Excle内存溢出

前言

早上九点多,群里说生产上出现OOM,也定位到了出现异常的代码,读取Excle导致的,问了Excle里面有六万多条数据,生产上先加大了堆内存然后重启服务

问题确定

因为我们已经能大概确定问题代码了,但是我们还是想确认一下

登录服务器,首先要查找到对应的java进程

ps -ef|grep java

发现服务启动的参数类似下面的,生产设置的堆内存最大为512M

-Xms50m -Xmx50m -XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=C:\Users\xxx\Desktop\temp

这就很舒服了,根据HeapDumpPath找到对应hprof,生成的hprof文件例如:java_pid9436.hprof,如果多个java进程的hprof文件都在一个目录下的话,要根据对应java进程的pid来获取到hprof文件

如果启动没有设置**-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=C:\Users\xxx\Desktop\temp**

因为这里已经能定位到问题,可以在本地上模拟出来,设置好启动的JVM参数就好了

这里借助MAT这一类的分析工具

在这里插入图片描述

可以看到有个超级大的对象占用了421.9M的内存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值