node: JavaScript head out of memory 内存不足导致项目运行不起来

vue前端编译打包的时候或者是node后台运行的时候,node报错堆溢出
node: JavaScript head out of memory 内存不足导致项目运行不起来

问题:
这是因为node是基于V8引擎,在64系统下,其所能支配的内存空间大概1.4G,32位系统下所支配的内存约0.7G。
所以项目大的话,有可能会出现内存不够。
在V8中,所有的JavaScript对象都是通过堆来进行分配的。Node提供了V8中内存使用量的查 看方式
process.memoryUsage();详情

{ rss: 31272960,
  //V8的堆内存使用情况,已申请到的堆内存
 heapTotal: 9682944,
  //V8的堆内存使用情况,当前使用的量
 heapUsed: 5400792,
  //V8 引擎内部的 C++ 对象占用的内存
 external: 16905 }

解决办法:
Vue前端&node后端:在package.json中的script脚本中手动调整内存大小node: JavaScript head out of memory 内存不足导致项目运行不起来
另外也可以在ide的终端命令或者说是cmd中设置 set node_options=--max_old_space_size=4096单位都是(MB)

v8的垃圾回收机制
V8的垃圾回收策略主要基于分代式垃圾回收机制
在V8中,主要将内存分为新生代和老生代两代。
新生代中的对象为存活时间较短的对象新生代中的对象主要通过Scavenge算法进行垃圾回收
老生代中的对象为存活时间较长或常驻内存的对象Mark-Sweep和Mark-Compact相结合的方式进行垃圾回收

可以自己写一个方法来增加内存直到溢出,然后打印出来查看内存使用情况;

Windows大概经常会有这种溢出的情况,但是Mac电脑没有。可能这就是系统差别吧。

上一篇:vue:设置浏览器的上的图标


下一篇:物联网发展的核心和关键技术 带你感受传感器的力量