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 に答える