节点的max_old_space_size是否会影响subprocess的内存限制?

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

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

但是,通过testing,我发现当我增加节点进程的max_old_space_size时,在查看内存问题之前,进程运行时间明显更长。 看起来像通过执行java进程分配的内存是针对父进程的最大分配计数的。 这是这种情况吗?

答案是不。 这些内存限制传递的唯一时间是如果你通过fork()产生一个节点进程,它将execArgv选项默认为process.execArgv (包括当前进程的V8标记),或者如果你产生一个孩子以明确限制内存使用的方式(例如,Java自己的资源限制标志或通过一个产生具有受限资源的实际subprocess的命令)进行处理。 节点不会以您的名义隐式执行ulimit或任何其他此类命令。