节点的max_old_space_size会影响子进程的内存限制吗?

时间:2017-03-14 17:40:38

标签: node.js child-process

我正在使用node来管理服务和长时间运行的java进程之间的通信层。此java进程是使用ChildProcess.spawn()

运行的jar

我正在设置stdio,close,stderr监听器来监视子进程的进度并保存输出。我希望子进程能够在自己的内存空间中运行,并且有自己的内存限制(这是一个独立的进程)。

但是,通过测试,我确定当我增加节点进程的max_old_space_size时,在看到内存问题之前,该进程运行的时间要长得多。似乎通过执行java进程分配的内存是根据父进程的最大分配计算的。是这种情况吗?

1 个答案:

答案 0 :(得分:4)

答案是否定的。只有当您通过fork()生成节点进程时才会传递这些内存限制,该进程默认其execArgv选项为process.execArgv(其中包括当前进程的V8标志) ),或者如果您以明确限制内存使用的方式生成子进程(例如Java自己的资源限制标志或通过使用受限资源生成实际子进程的命令)。节点不会代表您隐式执行ulimit或任何其他此类命令。