OOM模拟排查过程记录
OOM在线上环境中是可能遇到的BUG问题,最近,我在学习和了解相关问题的时候,做了一个问题的模拟与排查实践。在实验代码中有这样一段形成OOM问题的死循环代码如下:
将代码打成JAR后,在LINUX环境下,做运行,执行的命令如下:
java -Xms10m -Xmx10m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./jvm_logs/ -jar jvm_demo.jar &
涉及到的文件与日志目录的相对位置如下:
当成功运行程序代码后,出现了OOM的报错提示后,可以在jvm_logs目录下找到对应的日志文件
将对应的日志,通过FTP工具将日志文件下载到WIN环境并通过jVisualVM工具装入:
通过类选项卡,可以找到可能造成异常的实例对象名
双击元素进入后,可以看到很多实例,选择其中任意一个: