Опция JVM -Xss - Что он делает именно? - PullRequest
211 голосов
/ 11 февраля 2011

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

Ответы [ 4 ]

249 голосов
/ 11 февраля 2011

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

151 голосов
/ 28 сентября 2012

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

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

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

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

5 голосов
/ 11 февраля 2011

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

4 голосов
/ 11 февраля 2011

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

...