一、OOM简介
以下为转载的一些知识点,这边主要是记录以下排查过程
1.jvm内存分配不够,电脑内存的大小,不等于java程序能够使用的内存大小。jvm分配的内存大小,可以在JVM启动时,通过配置文件配置。
2.内存利用不当,有两个表现,内存泄漏和内存溢出。
内存泄漏:对象使用完毕后,不能够及时销毁,变成内存垃圾,如果不能够及时清理,内存垃圾越来越多,可用内存越来越少,影响程序的健康运行。虽然java提供GC机制,可以自动进行内存回收,但是逻辑错误,可能导致垃圾堆积过多。如,将太多的局部作用的对象保存为全局对象。
内存溢出:请求分配的内存,比jvm剩余可用内存少,导致程序不能够正确运行,导致崩坏。
二、排查准备
初步计划就是在oom的时候拿到内存的使用记录,然后用工具进行图表分析(图标更直观)
1、在JVM添加参数
-XX:+HeapDumpOnOutOfMemoryError
表示当JVM发生OOM时,自动生成DUMP文件
-XX:HeapDumpPath=/tmp/oom
DUMP文件存放的位置
如果平时想生成dump文件查看一下内存使用情况的话,可以用下面这句话:
jmap -dump:live,format=b,file=myjmapfile.txt 19570
19570是PID&#x