Вариант JVM -Xss - Что он делает точно?

В нем говорится here, что -Xss используется для "установки размера стека потока", что это значит? Может ли кто-нибудь помочь мне понять это?

Ответ 1

Каждый поток в приложении Java имеет свой собственный stack. Стек используется для хранения адресов возврата, аргументов вызова функции/метода и т.д. Поэтому, если поток имеет тенденцию обрабатывать большие структуры с помощью рекурсивных алгоритмов, для этого может потребоваться большой стек для всех возвращаемых адресов и т.д. С помощью Sun JVM вы можете установить этот размер с помощью этого параметра.

Ответ 2

Он действительно устанавливает размер стека на JVM.

Вы должны прикоснуться к ней в любой из этих двух ситуаций:

  • StackOverflowError (размер стека превышает лимит), увеличьте значение
  • OutOfMemoryError: невозможно создать новый собственный поток (слишком много потоков, каждый поток имеет большой стек), уменьшите его.

Последнее обычно приходит, когда ваш Xss установлен слишком большим - тогда вам нужно сбалансировать его (тестирование!)

Ответ 3

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

Ответ 4

Если я не ошибаюсь, это то, что сообщает JVM, сколько последовательных вызовов он примет до выдачи StackOverflowError. Не то, что вы хотите изменить в целом.