Javascript記憶體溢位,FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
問題:
在npm run build的時候,提示報錯,報錯資訊如下:TAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
1: node::Abort() [node]
2: 0x11e7fec [node]
3: v8::Utils::ReportOOMFailure(char const*, bool) [node]
4: v8::internal::V8::FatalProcessOutOfMemory(char const*, bool) [node]
5: v8::internal::Factory::NewRawTwoByteString(int, v8::internal::PretenureFlag) [node]
6: v8::internal::String::SlowFlatten(v8::internal::Handle, v8::internal::PretenureFlag) [node]
7: v8::internal::Runtime_StringCharCodeAtRT(int, v8::internal::Object**, v8::internal::Isolate*) [node]
原因:
報錯CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory堆記憶體不足,這裡說的JavaScript記憶體不足,其實就是 Node。因為 Node 是基於V8引擎,在一般的後端開發語言中,在基本的記憶體使用上沒有什麼限制。但是在 Node 中通過 JavaScript 使用記憶體時只能使用部分記憶體(64位系統下約為1.4 GB,32位系統下約為0.7 GB),這就是我們編譯專案時為什麼會出現記憶體洩露了。因為前端專案如果非常的龐大,webpack 編譯時就會佔用很多的系統資源,如果超出了V8對 Node 預設的記憶體限制大小就會出現上面的報錯。
解決辦法:
V8提供了選項讓我們使用更多的記憶體。Node 在啟動時可以傳遞 --max-old-space-size 或 --max-new-space-size 來調整記憶體大小的使用限制。如果遇到 Node 無法分配足夠記憶體給 JavaScript 的情況,可以用這個辦法來放寬V8預設的記憶體限制,避免在執行過程中稍微多用了一些記憶體就輕易崩潰。
傳遞 --max-old-space-size 來調整記憶體大小的使用限制,vue直接在package.json中的命令中的 node 後面寫上 --max_old_space_size=4096 就好了,一般設定記憶體大小是4G就可以了,不過具體的大小可以根據自己的專案情況來進行調整。
"scripts": {
"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
"start": "npm run dev",
"build": "node --max_old_space_size=4096 build/build.js"
},
相關文章
- 解決yarn打包時出現“FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory”的問題YarnErrorMITAIJavaScript
- Composer 記憶體不足解決方案 PHP Fatal error: Out of memory記憶體PHPError
- Android 棧記憶體溢位bug fix小記(pthread_create (1040KB stack) failed: Out of memory)Android記憶體溢位threadAI
- JavaScript之記憶體溢位和記憶體洩漏JavaScript記憶體溢位
- Android記憶體優化(四)解析Memory Monitor、Allocation Tracker和Heap DumpAndroid記憶體優化
- 【記憶體洩漏和記憶體溢位】JavaScript之深入淺出理解記憶體洩漏和記憶體溢位記憶體溢位JavaScript
- JavaScript閉包(記憶體洩漏、溢位以及記憶體回收),超直白解析JavaScript記憶體
- Java棧溢位|記憶體洩漏|記憶體溢位Java記憶體溢位
- 記憶體溢位記憶體溢位
- Java記憶體溢位Java記憶體溢位
- Jmeter記憶體溢位:java.lang.OutOfMemoryError: Java heap space解決思路JMeter記憶體溢位JavaError
- 記憶體溢位和記憶體洩露記憶體溢位記憶體洩露
- FATAL - Fatal error: Target Interaction Manager failed at StartupErrorAI
- 手動寫java OOM記憶體溢位 java.lang.OutOfMemoryError: Java heap spaceJavaOOM記憶體溢位Error
- JVM——記憶體洩漏與記憶體溢位JVM記憶體溢位
- 阿里大佬講解Java記憶體溢位示例(堆溢位、棧溢位)阿里Java記憶體溢位
- JavaScript 記憶體管理JavaScript記憶體
- JAVA記憶體區域與記憶體溢位異常Java記憶體溢位
- [Java基礎]記憶體洩漏和記憶體溢位Java記憶體溢位
- PHP Fatal error: Allowed memory size of 1610612736 bytesPHPError
- return new物件造成溢位記憶體物件記憶體
- mybatis-plus getOne 記憶體溢位MyBatis記憶體溢位
- 模擬實戰排查堆記憶體溢位(java.lang.OutOfMemoryError: Java heap space)問題記憶體溢位JavaError
- Java堆記憶體Heap與非堆記憶體Non-HeapJava記憶體
- 為什麼 Go 中有的自定義 error 會導致記憶體溢位GoError記憶體溢位
- java記憶體溢位和記憶體洩漏的區別Java記憶體溢位
- jvm記憶體設定及記憶體溢位、解決方案JVM記憶體溢位
- JavaScript的記憶體管理JavaScript記憶體
- 關於 PHP 記憶體溢位的思考PHP記憶體溢位
- 記憶體和棧溢位問題定位記憶體
- Windbg下使用dump分析記憶體溢位記憶體溢位
- php記憶體溢位了怎麼辦?PHP記憶體溢位
- Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)RedisError記憶體溢位
- Windows Tomcat 記憶體溢位解決方法WindowsTomcat記憶體溢位
- 關於Allowed memory size of (PHP記憶體溢位)錯誤的可能原因及解決方案PHP記憶體溢位
- JVM(2)-Java記憶體區域與記憶體溢位異常JVMJava記憶體溢位
- JavaScript 是如何工作的:JavaScript 的記憶體模型JavaScript記憶體模型
- 【譯】JavaScript 的記憶體模型JavaScript記憶體模型