解决 OOM 的初步思路:
- OOM 的发生,一定是 JVM 某区域的对象太多,塞满了很多无法回收的对象;
- 首先,需要知道到底是什么对象太多导致 OOM 的?
- 然后,想知道什么对象太多导致 OOM,就需要一份 OOM 时的内存快照;
- 怎么才能在 OOM 时自动 dump 一份内存快照?
(1) 在 OOM 的时候自动 dump 内存快照
- JVM 启动参数添加如下内容:
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/usr/local/app/oom