vue前端編譯打包的時候或者是node背景運作的時候,node報錯堆溢出

問題:
這是因為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腳本中手動調整記憶體大小
另外也可以在ide的終端指令或者說是cmd中設定 set node_options=--max_old_space_size=4096機關都是(MB)
v8的垃圾回收機制
V8的垃圾回收政策主要基于分代式垃圾回收機制
在V8中,主要将記憶體分為新生代和老生代兩代。
新生代中的對象為存活時間較短的對象新生代中的對象主要通過Scavenge算法進行垃圾回收
老生代中的對象為存活時間較長或常駐記憶體的對象Mark-Sweep和Mark-Compact相結合的方式進行垃圾回收
可以自己寫一個方法來增加記憶體直到溢出,然後列印出來檢視記憶體使用情況;
Windows大概經常會有這種溢出的情況,但是Mac電腦沒有。可能這就是系統差别吧。