出现OOM怎么排查
一、堆内存泄漏
1.观察报错信息
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
2.获取内存快照
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/path/to/dump.hprof
3.分析生成的dump文件
使用工具:VisualVM,MAT等
二、栈溢出
报错信息StackOverflowError
Exception in thread “main” java.lang.OutOfMemoryError: unable to create new native thread
排查代码,确定是否显示使用死循环创建线程,或者隐式调用第三方接口创建线程。
三、元空间(方法区)溢出
Caused by: java.lang.OutOfMemoryError: Metaspace
可能原因
- 1.生成大量代理对象
- 2.频繁使用反射,动态代理
- 3.-XX:MaxMetaspaceSize 设置过小