it-roy-ru.com

Опция JVM -Xss - Что он делает именно?

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

210
instantsetsuna

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

246
T.J. Crowder

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

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

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

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

149
Adam Adamaszek

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

5
Peter Lawrey

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

4
Kellindil