Как настроить js размер стека узла при использовании Graal? - PullRequest
0 голосов
/ 28 апреля 2020

Я столкнулся с проблемой при попытке использовать глубокую рекурсивную функцию в js я получаю исключение (RangeError: Превышен максимальный размер стека вызовов). Эта функция прекрасно работает из Грааля. Воспроизводится только при вызове полиглота Context.execute(). Первый вызов fini sh без исключения, но другой бросок. Я использую docker и изображение graaljdk oracle/graalvm-ce:20.0.0-java11 и использую один движок для всех потоков и создаю контекст для каждого потока. Могу ли я увеличить размер стека узлов с помощью параметров Graal или чего-то еще?

1 Ответ

0 голосов
/ 29 апреля 2020

Из вашего описания я предполагаю, что вы запускаете Graal JS из некоторого кода Java, используя API Polyglot.

Graal JS работает в тех же потоках, что и остальная часть JVM. Вы можете увеличить размер стека JVM, используя аргумент -Xss. Например,

$ <graalvm>/bin/java -Xss2m …

2m означает 2 МБ (я думаю, что по умолчанию x86_64 составляет 1 МБ). Вы можете экспериментировать с различными размерами, но помните, что чем выше вы устанавливаете его, тем меньше потоков вы можете поместить в фиксированный объем памяти.

...