欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java出现OOM错误排查

程序员文章站 2022-07-14 08:30:51
...

背景

      最近工作中出现OOM问题,经过一翻周折后将问题解决,现将处理过程的经验分析给大家,如果各位有更好的方式要在后面进行留言探讨,如无则可参考此解决方法。

说明

      因中间可能涉及到商业机密问题,所以在测试的项目为模拟生产环境的情景。

准备工作

      如果是在生产环境上运行可跳过此步骤。

      1、创建一个项目

      2、在项目中定义一个Main类,再定义一个Main方法,如

Java出现OOM错误排查

    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、运行结果

Java出现OOM错误排查

      4、这时在生成的目录下生成一个 memory.hprof 文件

Java出现OOM错误排查

分析内存文件

    1、打开 jvisualvm 工具

  •  方式一、在控制台输入 jvisualvm (配置环境变量情况下)
  • 方式二、在JDK安装的bin目录下打开 jvisualvm.exe

Java出现OOM错误排查

    2、选择文件 ->  装入

Java出现OOM错误排查

    3、类型选择堆Dump,文件选择刚刚生成的memory.hprof文件

Java出现OOM错误排查

    4、在堆转储上的线程中可以看到出现OOM的类,方法,,数据类型及行数信息

          当然还有其它一些有用的信息读者可以自行去研究

Java出现OOM错误排查

     5、与项目代码对应信息(重点)

Java出现OOM错误排查

到此,出现OOM错误问题已经定义

更多精彩技术分享请浏览本人博客:https://blog.csdn.net/wohiusdashi

相关标签: java