
最近在透過 AWS codebuild 部署專案時發現 build fail,追查 log 後發現噴了這行錯誤:
FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory原因為 V8 在預設堆疊使用的記憶體預設只有 512MB,然而這不在官網沒有明確指出有這個限制,以下是我在搜尋過後找到的解決方法:
「old-space」是 V8 引擎管理(也稱為垃圾收集)的堆積區(即 JavaScript 物件存放的地方)中最大且高度可配置的部分, –max-old-space-size 標誌用於控制其最大大小。當記憶體使用接近極限時,V8 將花費更多時間進行垃圾收集,以釋放未使用的記憶體。
如果堆積區記憶體使用(即 GC 無法釋放的活動物件)超過限制,V8 將使您的進程崩潰(由於缺乏替代方案),因此您不想將其設定得太低。當然,如果您將其設置得太高,那麼 V8 允許的額外堆積區使用可能會導致整個系統內存不足(並且由於缺乏替代方案而進行交換或強制終止隨機進程)。
總而言之,在擁有 2GB 記憶體的電腦上,我建議將 –max-old-space-size 設定為大約 1.5GB,以留出一些記憶體供其他用途使用並避免進行交換。
設定方式
方法一: 環境變數
export NODE_OPTIONS="--max-old-space-size=5120" # Increase to 5 GB
export NODE_OPTIONS="--max-old-space-size=6144" # Increase to 6 GB
export NODE_OPTIONS="--max-old-space-size=7168" # Increase to 7 GB
export NODE_OPTIONS="--max-old-space-size=8192" # Increase to 8 GB
# and so on...
# formula:
export NODE_OPTIONS="--max-old-space-size=(X * 1024)" # Increase to X GB
# Note: it doesn't have to be multiples of 1024.
# max-old-space-size can be any number of memory megabytes (MB) you have available.方法二: Commend line
node --max_old_space_size=5000 yourapp.js方法三: 透過專案執行
{
"start": "cross-env NODE_OPTIONS=--max-old-space-size=8192 webpack"
}最近在透過 AWS codebuild 部署專案時發現 build fail,追查 log 後發現噴了這行錯誤:
|FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory|
|201|
原因為 V8 在預設堆疊使用的記憶體預設只有 512MB,然而這不在官網沒有明確指出有這個限制,以下是我在搜尋過後找到的解決方法:
![[Pasted image 20231228124640.png]]
「old-space」是 V8 引擎管理(也稱為垃圾收集)的堆積區(即 JavaScript 物件存放的地方)中最大且高度可配置的部分, –max-old-space-size 標誌用於控制其最大大小。當記憶體使用接近極限時,V8 將花費更多時間進行垃圾收集,以釋放未使用的記憶體。
如果堆積區記憶體使用(即 GC 無法釋放的活動物件)超過限制,V8 將使您的進程崩潰(由於缺乏替代方案),因此您不想將其設定得太低。當然,如果您將其設置得太高,那麼 V8 允許的額外堆積區使用可能會導致整個系統內存不足(並且由於缺乏替代方案而進行交換或強制終止隨機進程)。
總而言之,在擁有 2GB 記憶體的電腦上,我建議將 –max-old-space-size 設定為大約 1.5GB,以留出一些記憶體供其他用途使用並避免進行交換。
設定方式
方法一: 環境變數
export NODE_OPTIONS="--max-old-space-size=5120" # Increase to 5 GB
export NODE_OPTIONS="--max-old-space-size=6144" # Increase to 6 GB
export NODE_OPTIONS="--max-old-space-size=7168" # Increase to 7 GB
export NODE_OPTIONS="--max-old-space-size=8192" # Increase to 8 GB
# and so on...
# formula:
export NODE_OPTIONS="--max-old-space-size=(X * 1024)" # Increase to X GB
# Note: it doesn't have to be multiples of 1024.
# max-old-space-size can be any number of memory megabytes (MB) you have available.方法二: Commend line
node --max_old_space_size=5000 yourapp.js方法三: 透過專案執行
{
"start": "cross-env NODE_OPTIONS=--max-old-space-size=8192 webpack"
}