webpack打包、編譯、熱更新Node內(nèi)存不足問題解決
日常先上結(jié)論
- 上班的打工開發(fā)可以直接在這里看解決方案
- 修復young object promotion failed Allocation failed - JavaScript heap out of memory報錯,全局安裝increase-memory-limit這個包就可以解決,安裝完后在項目控制臺執(zhí)行increase-memory-limit,然后再運行項目就完事啦,如果遇到其他報錯,可以直接看下面第2項解決方案。
- 所有Webpack編譯、打包、熱更新等等問題,只要是遇到上述報錯都可以用這個解決
問題背景
最近接手一個公司買過來的項目(燙手山芋),項目規(guī)模比常規(guī)后臺管理項目稍大一點。剛接手一頓操作npm i, npm run dev,安裝依賴,運行項目,沒有任何問題。這時候我還稍微放松了一點,心想好像這項目還沒什么坑。但是當我瀏覽系統(tǒng)、熟悉業(yè)務時出現(xiàn)了BUG,于是回到代碼打個console.log調(diào)試一下,常規(guī)操作,小問題。剛ctrl+s保存切到頁面想看報錯信息發(fā)現(xiàn)頁面已經(jīng)蹦了,眉頭一皺,感覺不對,console.log也能讓頁面蹦了嗎?切回vscode就看到控制臺紅紅的大字,webpack-dev-serve也蹦了。我又開始懷疑這項目了,console.log也能讓項目崩潰,還能玩嗎?買的別人公司的項目果然有坑。
報錯信息:FATAL ERROR: MarkCompactCollector: young object promotion failed Allocation failed - JavaScript heap out of memory
排查問題
往上看控制臺報錯信息,看到JS stacktrace、JavaScript heap out of memory,意識到應該是內(nèi)存不夠了

PS:young object promotion failed Allocation failed - JavaScript heap out of memory
這句話的意思是JavaScript在將新生區(qū)對象提升至老生區(qū)的時候出錯了 - 原因是JavaScript堆內(nèi)存不夠,
這里是V8對GC的優(yōu)化,將堆劃分為新生區(qū)和老生區(qū),新生區(qū)就是創(chuàng)建不久的對象唄,老生區(qū)就是已經(jīng)存在一段時間的對象,將堆空間劃分為新生老生兩個區(qū)是為了減少老生區(qū)的GC次數(shù),畢竟GC也會影響程序運行,要盡量減少。具體可以自行百度V8 GC優(yōu)化策略。
打開任務控制臺,看內(nèi)存占用還有剩余呀。那不是電腦內(nèi)存不夠,那就是Node可調(diào)用的系統(tǒng)內(nèi)存不夠用了

打開百度一搜Node可調(diào)用系統(tǒng)內(nèi)存有多少,果然出來Node基于V8引擎,V8在64位系統(tǒng)最大內(nèi)存為1.4G左右,而在32位系統(tǒng)只有0.7G左右

既然知道了問題所在,那么就好解決了,面向百度編程,百度搜索如何解決Node運行內(nèi)存不足的問題馬上就有了解決辦法,increase-memory-limit可以提高Node占用內(nèi)存。npm i -g increase-memory-limit安裝包,然后在項目目錄執(zhí)行increase-memory-limit,執(zhí)行成功
再執(zhí)行npm run dev又來了一個報錯,果然程序是一種修復一個BUG要再修復其他十幾個BUG的東西,可以按如下操作解決問題,執(zhí)行的時候多了一個""系統(tǒng)識別不了,去掉就可以了



總結(jié)
到此這篇關(guān)于webpack打包、編譯、熱更新Node內(nèi)存不足問題解決的文章就介紹到這了,更多相關(guān)webpack打包編譯熱更新Node內(nèi)存不足內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
nodejs 實現(xiàn)MQTT協(xié)議的服務器端和客戶端的雙向交互的過程
這篇文章主要介紹了nodejs 實現(xiàn)MQTT協(xié)議的服務器端和客戶端的雙向交互的過程,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2023-11-11
Windows 系統(tǒng)下安裝和部署Egret的開發(fā)環(huán)境
Egret基于TypeScript開發(fā)的,而TypeScript編譯工具tsc是基于Node.js 開發(fā)的。所以在安裝過程中,我們先需要對于基礎支持工具進行安裝。2014-07-07
Windows環(huán)境下npm install 報錯: operation not permitted, rename的解決
這篇文章主要介紹了Windows環(huán)境下npm install 報錯: operation not permitted, rename的解決方法,文中對解決的方法介紹的很詳細,有需要的朋友們可以參考借鑒。2016-09-09

