我是靠谱客的博主 哭泣烧鹅,最近开发中收集的这篇文章主要介绍OOM 如何排查,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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 如何排查所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部