3

ProcessBuilder.start 和 Runtime.exec 似乎在 *NIX 系统上使用 fork() ,这似乎为子进程分配了与父进程相同的内存量(参见例如 这个问题)。如果您想从使用大量内存的进程中启动几乎不需要内存的进程,这可能会很痛苦。

有没有办法使用 POSIX_SPAWN 启动进程——它不进行内存分配?我知道的唯一方法是使用Tanuki,但结果对我来说并不理想。

4

2 回答 2

1

这是一个实现 posix_spawn 的开源项目

https://github.com/axiak/java_posix_spawn

于 2011-09-12T18:00:20.517 回答
1

使用NuProcess库。它在 Linux 上使用 VFORK,不会先复制进程空间,从而消除了在从具有大堆的 java 进程中派生进程时频繁出现的 OOM 错误。

于 2013-10-16T13:28:25.703 回答