0

我试图执行 'jmap -dump:format =b; file" 命令在 runtime.exec() 中,但它不会在其他命令(如日期、密码)工作正常的地方执行。有人知道为什么吗?

公共静态无效命令(字符串 s){

    runtime=Runtime.getRuntime();


    try {
        System.out.println(" Creating Heap Dump ");
        process=runtime.exec("jmap -dump:format=b,file=D:/heapdump_2012APR10/heapdump_date +%d%b%Y-%H_%M_%S.bin 4478");
        System.out.println("Heap Dump Created. Zipping the file");
        process=runtime.exec("gzip *.bin");
        System.out.println("Succesfully zipped");



    } catch (Exception e) {
        e.printStackTrace();
    }
}
4

1 回答 1

0

您连续调用两个进程

process=runtime.exec("jmap -dump:format=b,file=D:/heapdump_2012APR10/heapdump_date +%d%b%Y-%H_%M_%S.bin 4478");
process=runtime.exec("gzip *.bin");

无需等待第一个终止。

然后你永远不会消耗你执行的进程流,或者检查他们的退出代码。

所以请按照@Andrew Thompson 的建议阅读这篇文章。它很好地解释了如何从 Java 启动外部进程。

于 2012-04-16T04:19:28.490 回答