可能情况:
- 一次性申请的数据太多
- 方案 : 分页
- 内存资源耗尽,未释放资源(属于内存泄漏)
- 找到未释放的资源,进行释放
- 方案 : 池化
- 本身资源不足
- jmap -heap 【进程ID】 : 查看堆信息
- 调整堆内存的方案 :
如何定位:
-
已经 OOM
-
提前设置Dump文件 :
Step1 : -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=[文件路径]
Step2 : 用 visualvm 载入 Dump文件 ,选择堆。
Step3 : 用工具查看,如
查看跟业务有关的对象(消耗的内存较大)-> 找到GCRoot -> 查看线程栈
-
-
还未 OOM
-
导出dump文件:
jmap -dump:format=b, file=[dumplog].hprof 【进程ID】
-