gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 10:55:26 33 4
gpt4 key购买 nike


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

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

在这种情况下,commandexec 调用的程序将分配多少内存?它与分配给 jvm 的内存有什么关系吗?如果是这样,我该如何克服这个限制?

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

Runtime.getRuntime().exec allocates the process with the same amount of memory as the main. If you had you heap set to 1GB and try to exec then it will allocate another 1GB for that process to run.

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

如果我像这样通过命令提示符运行命令会怎样?

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

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

最佳答案

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

当然,该方法也会返回一个 Process 对象,它本身会使用一些 JVM 内存,但这只是一些变量来跟踪启动的进程,因此,除非您并行启动数以万计的进程,否则这应该不是问题。

关于java - 分配给通过 Java 调用的命令行程序的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33342255/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com