导入导出大文件OOM如何处理?
分析日志
一般出现异常在日志中都可以看到OOM的日志,可以定位到具体的问题在哪个部分
导出堆日志
可以通过修改启动参数,然后将 heap dump 文件导出来
分析堆日志
通过MAT工具或其他堆文件分析工具来分析一下具体的哪个地方或者说具体的哪个类造成的
优化代码
一般情况下,导入导出大文件最有可能得就是一次性把整个文件的数据都拿出来到内存中。
这里堆代码进行优化,在循环从文件中取数据的时候,可以调整为每几行处理一次,或者每行处理一下
调整JVM参数
同时,如果代码调整存在瓶颈,那么我们可以在服务器资源允许的情况下,调整JVM参数,调整最大堆的值,以便于满足需要
测试
在测试环境进行测试验证,通过之后再上线
观察
后续要持续观察这个功能一段时间,确保确实不再发生问题