Compile 速度慢 ,JavaScript heap out of memory

因為隨著專案越來越大,
現在的專案規模約有10個module,110個component,15個service,
最近覺得在開發的時候compile的速度突然變好慢, ng serve需花1分鐘左右才會好,且常發生
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
即便找了把node --max_old_space_size加大, 結果變成


[9076:0000014A32DA8180]   101513 ms: Mark-sweep 1336.9 (1434.5) -> 1336.0 (1433.0) MB, 525.8 / 0.0 ms  (average mu = 0.165, current mu = 0.106) allocation failure scavenge might not succeed
[9076:0000014A32DA8180]   101528 ms: Scavenge 1337.0 (1433.5) -> 1336.1 (1434.0) MB, 3.1 / 0.0 ms  (average mu = 0.165, current mu = 0.106) allocation failure
[9076:0000014A32DA8180]   101544 ms: Scavenge 1337.1 (1434.0) -> 1336.3 (1434.5) MB, 5.3 / 0.0 ms  (average mu = 0.165, current mu = 0.106) allocation failure

查了這個得解法竟是設定node --max_old_space_size
好像進了胡同

想請教大大遇到懷疑是程式過肥大的時候, 會用什麼方法或工具檢視專案可改善的地方?
請問有大大遇到這個compile問題時, 有嘗試到什麼解決的方法嗎?

我原本懷疑是套件版本問題, 所以嘗試升級Angular CLI版本. Node版本, 也重新裝node_module好多次,
但都沒有改善, 所以現在朝向程式是不是哪裡寫得不好的方向尋找中…(現在在懷疑是不是有些沒有unsubscribe的關係)

以下為版本:
Angular CLI: 7.3.8
Node: 11.12.0
OS: win32 x64

10 module 110 個 component 其實並不算大,有辦法直接測試你的專案嗎? (可私下丟我)

1個讚

可以參考我的作法:

node --max_old_space_size=5120 ./node_modules/@angular/cli/bin/ng build --prod

感謝分享這解法,
我目前有設到8048, 不過有聽人家講說這其實是個繞過去的解法,
所以如果有空 可能還是可以一個一個檢視問題出自哪 這樣XD

說到這個問題,之前在 GitHub 上有看到相關的 issue, angular 團隊會在研究這一個問題

1個讚

哈 我今天也碰到了,目前採用

@11151 的做法先包

可是之後也想不太到該怎樣瘦身…尷尬…

Node.js 版本v12.5.0
Angular版本v8.2.14

參考