概述
1、启动的时候加上
-XX:+HeapDumpOnOutOfMemoryError
以上为本地idea配置启动参数 设置堆最大128m,并且设置如果发生oom的化,自动打印OOM时候的堆内存快照。
通过上述配置然后执行如下代码后的控制台结果
public static void main(String[] args) throws InterruptedException {
Map<Integer, byte[]> map = new HashMap<>();
for (int i = 0; i < 1000; i++) {
map.put(i, new byte[1024*1024]);
}
}
通过Java自带的VisualVm来分析发生OOM时候的堆内存快照
2、以上是程序启动之前,通过加上启动参数来生成进行执行快照,如果程序在执行过程中的化,就需要
2.1、jps
2.2、jmap -dump:live,format=b,file=<path> <pid>
通过以上两个命令来获取运行中的堆内存运行快照。
示例代码:
jmap -dump:live,format=b,file=./test-30669.hprof 30669
运行结果:
Dumping heap to /Users/eleme/Java/J2SE/test-30669.hprof ...
Heap dump file created
剩下的就可以继续通过VisualVm 来分析了。
最后
以上就是哭泣烧鹅为你收集整理的OOM 如何排查的全部内容,希望文章能够帮你解决OOM 如何排查所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复