使用 fork() 克服 Node.js 内存限制?

Ter*_*nen 4 javascript node.js

据我所知,大多数 Node.js 版本的每个进程的内存限制约为 1GB,基于以下信息:

目前,默认情况下,v8 在 32 位系统上的内存限制为 512MB,在 64 位系统上默认为 1.4GB。 https://github.com/nodejs/node-v0.x-archive/wiki/FAQ

这是一个旧档案,从那以后情况可能有所改善。然而,我感兴趣的是如果有人要使用

require('child_process').fork("newProcess.js")
Run Code Online (Sandbox Code Playgroud)

有可能克服这个限制吗?

因此,创建一个新的 V8 实例将为 JavaScript 对象创建一个新的内存池。

我问的原因是我找不到可靠的消息来源来准确确认这种情况,尽管文档强烈表明情况确实如此,因为它指出:

这些 Node.js 子进程仍然是 V8 的全新实例。

小智 5

如果我理解你的问题,你想 fork() 具有不同的内存限制(--max-old-space-size参数)。默认情况下,新的nodeJS实例将从父实例继承它。

但是,您可以绕过此限制,将参数传递给 forked() 实例,如下所示:

require('child_process').fork("newProcess.js", { 
        execArgv: ['--max-old-space-size=4096']
    });)
Run Code Online (Sandbox Code Playgroud)

这将分叉您的进程,但内存限制为 4Gb。