Дожили
Падает сборка проекта из-за недостатка памяти (компиляция тайпскрипта). На машине 32гб памяти.
Наверное какая-то переменная окружения? Никто не сталкивался? Я погуглил поверхностно, но наверное не по глазам.
Последний раз я похожее видел наверное на плюсах когда компилировал буст со спиритом.
Ужас под катом
[16976:0000027CB3429910] 9828365 ms: Mark-sweep 1343.8 (1441.0) -> 1329.5 (1442.5) MB, 611.7 / 0.1 ms (average mu = 0.286, current mu = 0.245) allocation failure scavenge might not succeed
[16976:0000027CB3429910] 9829209 ms: Mark-sweep 1344.3 (1442.5) -> 1330.9 (1443.5) MB, 637.2 / 0.1 ms (average mu = 0.265, current mu = 0.245) allocation failure scavenge might not succeed
bnk>Дожили bnk>Падает сборка проекта из-за недостатка памяти (компиляция тайпскрипта). На машине 32гб памяти. bnk>Наверное какая-то переменная окружения? Никто не сталкивался? Я погуглил поверхностно, но наверное не по глазам. bnk>Последний раз я похожее видел наверное на плюсах когда компилировал буст со спиритом.
Как вариант, zram+zswap могут помочь. Как раз на ноуте с бустом и кучей шаблонов когда-то только они и выручали.
PS. Firefox тоже когда-то не могли собрать сами разработчики.
Здравствуйте, Nuzhny, Вы писали:
N>Как вариант, zram+zswap могут помочь. Как раз на ноуте с бустом и кучей шаблонов когда-то только они и выручали. N>PS. Firefox тоже когда-то не могли собрать сами разработчики.
Спасибо, попробую. Но я же вообще-то жаваскрипт (тайпскрипт) компилирую (веб-проект блин, который вообще по идее должен работать без компиляции!)
Пришла беда откуда не ждали, что называется.
Здравствуйте, bnk, Вы писали:
bnk>Дожили bnk>Падает сборка проекта из-за недостатка памяти (компиляция тайпскрипта). На машине 32гб памяти.
либо нода с урезаной кучей. есть такая кажетяс называется compressed pointer. точнее это не нода, а движок V8 с недавних пор так умеет. куча всего 4 гб. потому что указатели 4х байтовые.
либо кроме тайпскрпита иклюдиш json и картинки в исходники. в этом случае надо столько озу сколько файлов данных умножить на 2-3 или больше.
ну и в качесвте костыля
1 пробовал компилить без source map?
выключается или GENERATE_SOURCEMAP=false или SOURCE_MAP=false или в проекте в зависимости чем компилиш
2 пробовал компилить восьмой нодой? она магическим образом в два раза меньше памяти жрет приэтом на выходе выдает идентичный javascript
bnk>Наверное какая-то переменная окружения? Никто не сталкивался? Я погуглил поверхностно, но наверное не по глазам.
есть NODE_OPTIONS. там можно рамеры разных куч задавать и интенсивность сборщика мусора.
все опции можно посмотреть
bnk>Дожили bnk>Падает сборка проекта из-за недостатка памяти (компиляция тайпскрипта). На машине 32гб памяти. bnk>Наверное какая-то переменная окружения? Никто не сталкивался? Я погуглил поверхностно, но наверное не по глазам. bnk>Последний раз я похожее видел наверное на плюсах когда компилировал буст со спиритом.
У нас такое было (ангулярный проект), когда компилили в продакшн.
Потыкай в этом направлении:
1. Найди фолдер C:\Users\userName\%AppData%\Roaming\npm.
2. В этом фолдере найди батник ng.cmd.
3. В этом батнике добавь в каждый вызов node.exe такой параметер: --max_old_space_size=8048 (число здесь — количество мегабайт памяти). То есть, если у тебя, скажем, изначально было
node "%~dp0\node_modules\@angular\cli\bin\ng" %*,
то поменяй на
node "--max_old_space_size=8048" "%~dp0\node_modules\@angular\cli\bin\ng" %*
Мы свой проект компилируем как ng serve (в девелопмент) или как ng build --prod (в продакшн), и у нас этот трюк вполне себе работает.
Здравствуйте, Jester, Вы писали:
J>Мы свой проект компилируем как ng serve (в девелопмент) или как ng build --prod (в продакшн), и у нас этот трюк вполне себе работает.
У меня не ангуляр, поэтому дословно рецепт неприменим.. Но идея примерно такая же, в итоге сделал так
gulp build --max_old_space_size=8192
Эта штука перезапускает node с новыми параметрами:
Печаль что компиляция тайпскрипта хочет теперь дофига памяти. Это так-то 8, блин, гигабайт.
У меня даже с этим размером иногда валится (когда работает непрерывно, т.е. --watch, может раз в день)
Здравствуйте, DenisCh, Вы писали:
bnk>>Но я же вообще-то (тайпскрипт) компилирую (веб-проект блин, который вообще по идее должен работать без компиляции!)
DC>Давно тайпскрипт начал без компиляции работать? Да ещё "должен"...
"Компиляция" тайпскрипта это вырезание всех типов из кода. Эту "компиляцию" можно в один проход делать с потреблением памяти в несколько сотен байтов.