Node.js(和chrome V8)中的内存限制

cha*_*cko 61 memory-management node.js

在网络的许多地方,你会看到:

节点进程的内存限制是多少?

和答案:

目前,默认情况下,v8在32位系统上的内存限制为512mb,在64位系统上的内存限制为1GB.通过将--max-old-space-size设置为最大~1gb(32位)和~1.7gb(64位)可以提高限制,但建议您将单个进程分成几个工作程序如果你达到内存限制.

可以有人确认这是因为node.js似乎经常更新??? *更重要的是,在不久的将来会是这样的吗?*

我想编写javascript代码,可能需要处理4gb的javascript对象(速度可能不是问题)

如果我不能在节点中做到这一点,我将最终在java(在64位机器上)做,但我宁愿不...

Sam*_*nen 21

对于一些使用Node.js的人来说这是一个很大的问题,并且有好消息.对于64位,V8的新内存限制现在是未知的(未经测试),并且在32位环境中可以提升到32位地址空间.

在此处阅读更多内容:http://code.google.com/p/v8/issues/detail?id = 847

  • 我仍然(即使是64位)需要指定我想要更多的内存--max-old-space-size = 10000(10GB)选项,否则我得到"致命错误:CALL_AND_RETRY_2分配失败 - 处理内存不足"在Windows上的任务管理器中,内存使用量为~1.7GB. (4认同)

Piy*_*iya 17

以 8 GB 的堆内存启动 nodejs 应用程序

node --max-old-space-size=8192 app.js
Run Code Online (Sandbox Code Playgroud)

请参阅节点命令行选项文档或运行:

node --help --v8-options
Run Code Online (Sandbox Code Playgroud)


j03*_*03m 6

我现在正在Ubuntu linux上运行proc,它有明确的内存泄漏,节点0.6.0正在推动8gb.认为这是处理:).


Pau*_*kin 2

看起来好像是真的。当我尝试在缓冲区中分配 50 Mb 字符串时:

var buf = new Buffer(50*1024*1024);
Run Code Online (Sandbox Code Playgroud)

我有一个错误:

FATAL ERROR: CALL_AND_RETRY_2 Allocation failed - process out of memory
Run Code Online (Sandbox Code Playgroud)

同时,进程监视器中 Node.js 使用了大约 457 Mb 的内存。