node - 无效的数组长度

Spi*_*Pig 25 javascript node.js

我正在使用节点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);
Run Code Online (Sandbox Code Playgroud)

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

Vis*_*hra 7

V8的堆大小限制为64位的1 GB和32位机器的512,但缓冲区对象主要存在于堆外.您可以在64位中扩展内存使用最多1.7 GB,在32位计算机中扩展内存使用大约1 GB.你可以试试这个.

--max-old-space-size=3000  --trace-gc-verbose
Run Code Online (Sandbox Code Playgroud)

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


Haz*_*yan -1

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

配置 v8 的内存管理,使其对 Node.js 进程来说更加智能

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