Как увеличить память при запуске? - PullRequest
1 голос
/ 21 сентября 2019

есть ли возможность для node.js увеличить начальную выделенную память?https://futurestud.io/tutorials/node-js-increase-the-memory-limit-for-your-process

--max-old-space-size, кажется, увеличивает максимальную память, но как насчет начальной памяти?Вроде как xmx и xms для JVM.

1 Ответ

1 голос
/ 21 сентября 2019

V8 разработчик здесь.Короткий ответ - нет.

Причина, по которой такой опции не существует, заключается в том, что добавление свежих страниц в кучу происходит так быстро, что нет существенной выгоды делать это заранее.

V8 имеет флаг --initial-old-space-memory,но не увеличивает начальное распределение.Вместо этого, это означает, что «не надо делать GC (в старом пространстве), пока размер кучи ниже этого предела».Если вы установите это значение, например, 1000 (МБ), а затем выделите 800 МБ недоступных объектов, а затем просто подождите, то V8 будет сидеть без дела с 800 МБ мусора в куче и не будет поднимать палец, чтобы избавиться отчто-нибудь из этого.

Я не уверен, в каком сценарии это поведение было бы полезно (это не значит, что оно полностью отключит GC; GC будет запускаться реже, но меньше GC при большей куче неЭто не обязательно добавляет к общему времени меньше, чем больше сборщиков мусора на меньшую кучу), поэтому я настоятельно рекомендую тщательно измерить влияние на вашу конкретную рабочую нагрузку перед использованием этого флага - если бы он был aхорошая идея включить это по умолчанию, тогда будет включено по умолчанию!

Если бы мне пришлось угадывать: этот флаг может быть полезным, есливы знаете, что (1) ваше приложение будет иметь большое количество «вечных» (= живет до тех пор, пока приложение работает) данных в куче, и (2) вы сможете оценить объем этих данных с разумной точностью.Например: если вы знаете, что в любой момент времени ваше старое пространство будет состоять из 500 МБ данных, которые всегда доступны, в любом случае плюс любой потенциально-освобождаемый мусор, вы можете использовать этот флаг, чтобы сообщить V8 "еслиразмер старого пространства меньше 600 МБ (= 500 МБ плюс немного), поэтому не пытайтесь найти мусор, это не будет стоить усилий ».

...