Java jmap与jcmd命令dump内存heap堆

Posted zhangphil

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java jmap与jcmd命令dump内存heap堆相关的知识,希望对你有一定的参考价值。

        //获取当前Java程序的进程id
        long pid = ProcessHandle.current().pid();

        //jmap与jcmd两种命令方式效果相同,均为dump内存
        String[] cmd1 = {"jmap", "-dump:live,formt=b,file=D:/dump/jmap.hprof", String.valueOf(pid)};
        String[] cmd2 = {"jcmd", String.valueOf(pid), "GC.heap_dump", "D:/dump/jcmd.hprof"};

        try {
            Runtime.getRuntime().exec(cmd1);
            Runtime.getRuntime().exec(cmd2);
        } catch (IOException e) {
            e.printStackTrace();
        }

        try {
            //等待输入任意按钮结束程序。如果没有这一段代码,程序很快返回后,dump内存来不及处理,没有日志输出。
            System.in.read();
        } catch (IOException e) {
            e.printStackTrace();
        }

以上是关于Java jmap与jcmd命令dump内存heap堆的主要内容,如果未能解决你的问题,请参考以下文章

JFR 使用记录

Java命令学习系列之jmap

性能监控之常见 Java Heap Dump 方法

JVM监控及诊断工具-命令之jcmd

jmap:java内存影像工具

Java命令学习系列——Jmap