nodejs JavaScript heap out of memory 错误解决方案
最近在用nodejs处理比较大的数据的时候遇到了这样的错误
|
|
按照字面的解释是内存溢出了,一直以为nodejs是没有这种情况的所以赶紧谷歌了一下,发现原来是因为官方的默认内存配置太小,官方给的解释如下:
|
|
来源: https://github.com/nodejs/node/wiki/FAQ
也就是说,默认nodejs 使用的V8引擎官方默认配置是在64位的系统重视1.4g的内存,也正好和上面的提示用量一样,并且内存大小最大为4g,官方还建议如果使用较大内存的话则需要分成多个子worker这样来规避大内存的使用。
所以解决方法有两个
-
在执行node命令的时候使用
–max_old_space_size=4096 这个参数,设置最大4gb的内存
例如以前的node a.js变成 node --max_old_space_size=8000 a.js -
直接安装 一个npm包 increase-memory-limit 包地址如下:
https://www.npmjs.com/package/increase-memory-limit
这个包会自动为命令增加 --max_old_space_size=4096 参数。
我个人是倾向直接在命令行中使用参数,为了这点小事再装一个包总觉得不值。