节点的 max_old_space_size 是否影响子进程的内存限制?

Nat*_*ist 4 child-process node.js

我正在使用节点来管理服务和长时间运行的 java 进程之间的通信层。这个java进程是一个jar,使用以下命令运行ChildProcess.spawn()

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

但是,通过测试,我确定当我增加max_old_space_size节点进程时,在出现内存问题之前,该进程的运行时间明显更长。看起来通过执行java进程分配的内存是根据父进程的最大分配来计算的。是这样吗?

msc*_*dex 6

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