Java出现OOM错误排查
背景
最近工作中出现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:HeapDumpPath=E:/XXX/memory.hprof --将生成堆分析文件保存到E:/XXX/memory.hprof
XXX.jar --运行的程序包
3、运行结果
4、这时在生成的目录下生成一个 memory.hprof 文件
分析内存文件
1、打开 jvisualvm 工具
- 方式一、在控制台输入 jvisualvm (配置环境变量情况下)
- 方式二、在JDK安装的bin目录下打开 jvisualvm.exe
2、选择文件 -> 装入
3、类型选择堆Dump,文件选择刚刚生成的memory.hprof文件
4、在堆转储上的线程中可以看到出现OOM的类,方法,,数据类型及行数信息
当然还有其它一些有用的信息读者可以自行去研究
5、与项目代码对应信息(重点)
到此,出现OOM错误问题已经定义
更多精彩技术分享请浏览本人博客:https://blog.csdn.net/wohiusdashi
上一篇: 集合 (Set List Map)
下一篇: Jenkins安装以及错误排查
推荐阅读
-
Flash绿色版打开提示Java出现错误的解决方法
-
Android 出现:java.lang.NoClassDefFoundError...错误解决办法
-
java端连接zookeeper出现unknowHostException错误
-
Google App Engine (Java + String + Velocity)数据访问调试,出现错误 Cannot find class [javax
-
java运行时环境初始化时出现错误 你可能要重新安装flash cs5的解决方法(已测)
-
dom4j解析XML时出现"java.lang.noclassdeffounderror: org/jaxen/jaxenexception"错误
-
dom4j解析XML时出现"java.lang.noclassdeffounderror: org/jaxen/jaxenexception"错误
-
Java出现OOM错误排查
-
【我的Android进阶之旅】解决Android编译时候出现错误:java.util.zip.ZipException: zip file is empty
-
解决Java变异出现错误No enclosing instance of type XXX is accessible