节点 – 无效的数组长度

我正在使用节点v0.12.4。 当我运行下面的代码node --max-old-space-size=8192 test.js它给了我错误FATAL ERROR: invalid array length Allocation failed - process out of memory

 var a = new Array(200000000); console.log(a.length); 

但是,如果我将大小更改为300000000,我不会收到任何错误。 这里发生了什么? 除了--max-old-space-size我还需要改变一些命令行参数吗?

V8的堆大小限制为64 GB的512 GB和32位的机器的512 GB,但Buffer对象大部分存在于堆之外。 您可以将内存使用扩展到64位,最高可达1.7 GB,32位机器可达1 GB。 你可以试试这个

 --max-old-space-size=3000 --trace-gc-verbose 

您可以打印跟踪以了解内存使用情况。

有一个内存的限制.64位机器可以使用大约1.6GB。这是V8编译器的限制。 这个链接也许可以帮助你

configurationv8的内存pipe理对于node.js进程来说是明智的

https://groups.google.com/forum/#!topic/nodejs/BQ5dSm8lITQ