【发布时间】:2011-11-03 20:53:19
【问题描述】:
在网络的很多地方,你会看到:
节点进程的内存限制是多少?
以及答案:
目前,默认情况下,V8 在 32 位系统上的内存限制为 512mb,在 64 位系统上为 1gb。可以通过将 --max-old-space-size 设置为最大 ~1gb(32 位)和 ~1.7gb(64 位)来提高限制,但建议您将单个进程拆分为多个 worker如果你达到了内存限制。
有人可以确认这是因为 Node.js 似乎经常更新吗?
更重要的是,在不久的将来会是这样吗?
我想编写可能必须处理 4gb javascript 对象的 JavaScript 代码(而且速度可能不是问题)。
如果我不能在 Node 中做,我最终会用 java(在 64 位机器上)做,但我宁愿不做。
【问题讨论】:
-
到底有什么东西会占用 4GB 的 JS 对象?
-
@dominic-barnes:图片。电影。咳咳,有关系吗?总有一天会的。以 MMORPG 为例。我同意这些限制是残酷的,在 v8 的原始草案中使用 32 位整数进行寻址是一个严重的程序员错误。
-
你说:“如果你想拥有 4gb 的数据,你不能作为 JS 对象来做。”如果那句话是真的(并且会持续一段时间),我认为 nodejs 都是炒作。因此,我希望你是错的。
-
我在 nodejs 对象中轻松移动了 8GB 左右,仅供参考。我认为自从提出这个问题以来,过去几年发生了很多变化。
-
只要您流式传输数据,就没有内存限制。读写流是一种很棒的设计模式,它可以帮助您做您需要的事情,而不会耗尽 V8 内存。