背景
最近工作中出现OOM问题,经过一翻周折后将问题解决,现将处理过程的经验分析给大家,如果各位有更好的方式要在后面进行留言探讨,如无则可参考此解决方法。
说明
因中间可能涉及到商业机密问题,所以在测试的项目为模拟生产环境的情景。
准备工作
如果是在生产环境上运行可跳过此步骤。
1、创建一个项目
2、在项目中定义一个Main类,再定义一个Main方法,如
3、将代码编译成可执行文件
- 方式一、使用Maven生成Jar包(使用此方式进行演示)
- 方式二、使用javac编译成class文件
生成内存分析文件
1、在执行程序时需要添加启动参数,如
java -Xmx102m -Xms102m -XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=E:/lob/memory.hprof -jar XXX.jar
2、参数说明:
-Xmx -Xms --启动最小、最大内存
-XX:+HeapDumpOnOutOfMemoryError --开启堆快照
-XX:HeapDump