为什么Runtime.getRuntime()。exec()调用的进程具有有限的内存分配能力?

时间:2015-05-12 22:10:23

标签: java memory process desktop-application

在我的Java 8应用程序中,我通过调用:

创建新进程
Process applicationProcess = Runtime.getRuntime.exec(executionCommand);

如果在Windows 7 64位+ Java 8 64位(8GB RAM)上执行,我的executionCommand包含* .exe应用程序路径(基本上是带有* .exe启动程序和预定义-Xmx 4096m的Java应用程序和 - Xms 2048m VM选项)。

调用.exe applicationProcess会立即创建其他进程“B”并关闭Process applicationProcess,因此我从Java应用程序内部删除了对“B”进程的任何引用。

当我的应用程序正在运行时,上面的命令调用的进程“B”以某种方式将内存分配限制在~800MB 。 这会使这个过程瘫痪,因此无法正常工作。

如果我关闭我的应用程序(当被调用的进程仍在运行时),突然调用的进程“B”开始根据其预定义的VM选项分配额外的内存并重新获得适当的全部效率。

显然我的应用程序限制了被调用进程“B”的内存分配能力。 为什么会这样,我怎么能绕过这个限制?

注意: 1.为我的java应用程序(invocator)设置更高的-Xmx和-Xms值并不能解决这个问题。

0 个答案:

没有答案