Подтвердить что ты не робот

Как увеличить максимальный размер стека вызовов в Node.js

Это отличается от других вопросов, касающихся сообщения об ошибке в Node, который читает RangeError: Максимальный размер стека вызовов, поскольку я точно знаю, почему я получаю это сообщение об ошибке. Это происходит из-за того, что я рекурсивно рекурсивно рекурсивно.

Спасибо.

4b9b3361

Ответ 1

От node --help:

node --max-stack-size=val

Обновление: как указывают комментарии, хотя текст справки по-прежнему отображает параметр --max-stack-size, в node v0.10.x вместо этого вам нужно использовать --stack-size.

node --stack-size=val

Ответ 2

В node версии 5 и 6 я подтвердил, что опция установить максимальный размер стека - "--stack_size" (с подчеркиванием):

$  node --v8-options
[...]
--stack_size (default size of stack region v8 is allowed to use (in kBytes))
      type: int  default: 984

Чтобы увеличить максимальный размер стека, просто введите что-то вроде:

$ node --stack_size=1200

Как отмечают другие, имейте в виду, что увеличение этого значения может привести к ошибке сегментации. Максимальное безопасное значение для меня с версией 6 - 1361, но, похоже, с версией 5.

Если посмотреть на картинку большего размера, увеличение размера стека может не решить все ваши проблемы. При написании рекурсивных функций в node ваша лучшая стратегия заключается в том, чтобы записать их в tail-recursive , поскольку версия 6 поддерживает правильные хвостовые вызовы. Это устраняет.