http://stackabuse.com/setting-up-a-node-js-cluster/ 说
” 需要明确的是,Node 中的分叉与 POISIX 分叉非常不同,因为它实际上并不克隆当前进程,但它确实启动了一个新的 V8 实例。
尽管这是最简单的多线程方法之一,但应谨慎使用。仅仅因为你能够产生 1,000 名工人并不意味着你应该这样做。每个worker都占用系统资源,所以只产生那些真正需要的。Node 文档指出,由于每个子进程都是一个新的 V8 实例,因此您需要预计每个子进程的启动时间为 30 毫秒,每个实例至少需要 10 mb 的内存。”
但是https://nodejs.org/api/cluster.html说
“Node.js 或您的程序中没有路由逻辑,工作人员之间也没有共享状态。因此,重要的是设计您的程序,使其不会过于依赖内存中的数据对象,例如会话和登录。”
如果工人(分叉的进程)实际上不是主进程的克隆,那么为什么也没有共享状态呢?
我的印象是,如果主进程有一个 1 GB 的 JSON 字符串,那么所有子进程也会有那个 1 GB 的 JSON 字符串的克隆。因此,如果有两个孩子,将使用 3gb 的内存。实际发生了什么?