ProcessBuilder.start和Runtime.exec似乎在*NIX系统上使用fork(),它似乎分配子进程与父进程相同的内存量(例如,参见 this question )。如果你想启动一个几乎不需要内存的进程,这可能会很痛苦,因为这个进程使用了很多内存。
有没有办法使用POSIX_SPAWN启动进程--它不执行这种内存分配?据我所知,唯一的方法是使用Tanuki,但事实证明,这对我来说并不理想。
发布于 2011-09-13 02:00:21
下面是一个实现posix_spawn的开源项目
发布于 2013-10-16 21:28:26
使用NuProcess库。它在Linux上使用VFORK,它不会首先复制进程空间,从而消除了从具有大堆的java进程派生进程时频繁出现的OOM错误。
https://stackoverflow.com/questions/3115277
复制相似问题