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

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

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

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



總結(jié)
到此這篇關(guān)于webpack打包、編譯、熱更新Node內(nèi)存不足問(wèn)題解決的文章就介紹到這了,更多相關(guān)webpack打包編譯熱更新Node內(nèi)存不足內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mac下通過(guò)brew安裝指定版本的nodejs教程
今天小編就為大家分享一篇Mac下通過(guò)brew安裝指定版本的nodejs教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
nodejs控制臺(tái)打印高亮代碼的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于nodejs控制臺(tái)打印高亮代碼的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05
nodejs 實(shí)現(xiàn)MQTT協(xié)議的服務(wù)器端和客戶端的雙向交互的過(guò)程
這篇文章主要介紹了nodejs 實(shí)現(xiàn)MQTT協(xié)議的服務(wù)器端和客戶端的雙向交互的過(guò)程,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-11-11
koa+jwt實(shí)現(xiàn)token驗(yàn)證與刷新功能
這篇文章主要介紹了koa+jwt實(shí)現(xiàn)token驗(yàn)證與刷新功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05
Windows 系統(tǒng)下安裝和部署Egret的開(kāi)發(fā)環(huán)境
Egret基于TypeScript開(kāi)發(fā)的,而TypeScript編譯工具tsc是基于Node.js 開(kāi)發(fā)的。所以在安裝過(guò)程中,我們先需要對(duì)于基礎(chǔ)支持工具進(jìn)行安裝。2014-07-07
Windows環(huán)境下npm install 報(bào)錯(cuò): operation not permitted, rename的解決
這篇文章主要介紹了Windows環(huán)境下npm install 報(bào)錯(cuò): operation not permitted, rename的解決方法,文中對(duì)解決的方法介紹的很詳細(xì),有需要的朋友們可以參考借鑒。2016-09-09

