2011-08-25 34 views
43

在网络中的很多地方,您将看到:Node.js(和chrome V8)中的内存限制

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

和答案:

目前,通过默认V8具有512MB的32位系统的存储器限制,以及在64位的系统1GB。通过将--max-old-space-size设置为最大值〜1gb(32位)和〜1.7gb(64位),可以提高限制,但建议您将单个进程拆分为多个工人如果你正在达到内存限制。

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

我想编写JavaScript代码,这可能要处理JavaScript对象的4GB(和速度可能不是一个问题)

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

+5

什么在世界上可以占用4GB的JS对象? –

+23

@ dominic-barnes:图片。电影。哎呀,这有什么关系吗?有一天会有的。例如,一个MMORPG。我同意这些限制是残酷的,并且在v8的原始草案中使用32位整数进行寻址是严重的程序员错误。 –

+0

如果你想拥有4GB的数据,你不能把它作为JS对象。也许这个链接可以帮助吗? https://developer.mozilla.org/en/javascript_typed_arrays – goatslacker

回答

1

看起来像一个真实的。当我试图分配缓冲区中的50 Mb字符串var buf = new Buffer(50*1024*1024);时,我得到了致命错误FATAL ERROR: CALL_AND_RETRY_2 Allocation failed - process out of memory。我在进程监视器中修复了大约457 Mb的nodejs内存使用情况。

16

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

更多在这里阅读:http://code.google.com/p/v8/issues/detail?id=847

+2

我仍然(即使有64位)需要指定我需要更多的内存与--max-old-space-size = 10000(对于10GB)选项,否则我会得到“致命错误:CALL_AND_RETRY_2分配失败 - 进程内存不足“Windows上任务管理器的内存使用量约为1.7GB。 –

+1

我在v7.8.0中使用8gb +很容易 - 只是希望我的机器有更多的内存 – JoeRocc

5

我运行一个进程现在,有一个明确的内存泄漏和节点0.6.0是推8GB Ubuntu Linux操作系统。认为它的处理:)。

-5

node --max-old-space-size flag = chrome

+4

这不是一个答案。 –