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

Does node's max_old_space_size affect the child processs's memory limits?

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

的 jar

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

但是,通过测试我确定当我增加节点进程的 max_old_space_size 时,进程 运行 显着延长,然后才会出现内存问题。似乎通过执行 java 进程分配的内存被计入父进程的最大分配。是这样吗?

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