为什么循环构造长度为1亿的数组在node中会报内存不足?
以下代码在node中运行会报错
let arr = [];
for (let i = 0; i < 100000000; i++) {
arr.push(1);
}
console.log(arr.length);
10 回复
不会报错啊?你会报什么错,截个图?
报错是内存不足,并不代表数组长度不能达到 2^32 - 1。
@waitingsong node是有什么内存限制吗?
@shizengzhou 有哇
32位机器只有 ~700 MB 的堆限制
使用buffer吧
来自酷炫的 CNodeMD
这种情况你只能适用buffer或者redis
V8的运行内存是有限的~
上面说的对,v8的堆内存有限制,64位系统大概1.4g,32位0.7g。buffer的申请的内存是堆外内存,所以不受这个限制。。。或者启动脚本的时候加上 --max-old-space-size或者–max-new-space-size 来设置老生代内存空间和新生代内存空间。。。。刚看完深入浅出可用上了。2333