内存分配给通过Java调用的命令行程序

时间:2015-10-26 09:24:11

标签: java memory-management jvm


假设我使用以下代码段通过java调用命令行程序

 p = Runtime.getRuntime().exec(command);
 p.waitFor();

在这种情况下,command调用的程序exec将分配多少内存?是否与为jvm分配的内存有关? 如果是这样,我该如何克服这个限制?

更新
根据对这个问题的答复,How to solve "java.io.IOException: error=12, Cannot allocate memory" calling Runtime#exec()?

  

Runtime.getRuntime()。exec以相同的金额分配进程   以记忆为主。如果您将堆设置为1GB并尝试执行   然后它将为该进程分配另外1GB来运行。

那么有什么方法可以为我使用java调用的进程提供更多内存?

如果我通过这样的命令提示符运行命令怎么办?

rt.exec("cmd.exe /c command");

在这种情况下,谁来决定内存限制?命令提示符还是Java?

1 个答案:

答案 0 :(得分:1)

javadoc for Runtime.exec表示命令将在单独的进程中启动。因此,命令本身将在其自己的进程中运行,并且不使用任何JVM内存。

然而,当然该方法也返回一个Process对象,它本身将使用一些JVM内存,但这只是一些变量来跟踪启动的进程,所以除非你并行启动成千上万的进程,这应该不是问题。