[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-mnogopotochnost-kakoy-parametr-zapuska-jvm-ispolzuetsya-dlya-kontrolya-razmera-steka-potoka":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":20,"progress":21,"seo":22},271,"kakoy-parametr-zapuska-jvm-ispolzuetsya-dlya-kontrolya-razmera-steka-potoka",8,"mnogopotochnost","Многопоточность","🔀","Какой параметр запуска JVM используется для контроля размера стека потока?","\u003C!-- grade: 3\u002F5 — ответ слишком краткий, не раскрыт контекст -->\n\nДля контроля размера стека потока используется параметр **`-Xss`**.\n\n### Синтаксис\n\n```bash\njava -Xss\u003Cразмер> MyApp\n```\n\nПримеры:\n```bash\njava -Xss512k MyApp    # 512 килобайт\njava -Xss1m MyApp      # 1 мегабайт\njava -Xss2m MyApp      # 2 мегабайта\n```\n\n### Значения по умолчанию\n\n| Платформа | Размер стека по умолчанию |\n|---|---|\n| Linux x64 | 1 МБ |\n| macOS x64 | 1 МБ |\n| Windows x64 | 1 МБ (может варьироваться) |\n| 32-bit JVM | 512 КБ |\n\n### Что хранится в стеке потока\n\n- Фреймы вызовов методов (call stack frames)\n- Локальные переменные (примитивы и ссылки)\n- Промежуточные результаты вычислений\n- Информация для обработки исключений\n\n### Когда увеличивать -Xss\n\n- **`StackOverflowError`** при глубокой рекурсии -- увеличьте `-Xss`.\n- Приложение использует много потоков с глубокими стеками вызовов.\n\n### Когда уменьшать -Xss\n\n- Приложение создаёт **много потоков** (тысячи) и памяти не хватает: каждый поток выделяет стек, и при 1000 потоках × 1 МБ = 1 ГБ только на стеки.\n- Уменьшение `-Xss` до 256-512 КБ может существенно снизить потребление памяти.\n\n### Программная установка\n\nРазмер стека можно задать при создании потока:\n\n```java\n\u002F\u002F Размер стека только для этого потока\nThread thread = new Thread(null, runnable, \"my-thread\", 512 * 1024); \u002F\u002F 512 КБ\nthread.start();\n```\n\n### Virtual Threads (Java 21+)\n\nДля виртуальных потоков параметр `-Xss` **не применяется**. Виртуальные потоки используют динамический стек, который начинается с нескольких КБ и растёт по мере необходимости. Это позволяет создавать миллионы виртуальных потоков без проблем с памятью.\n\n> **Аналогия из жизни.** `-Xss` -- это высота шкафа для документов: чем выше шкаф (больше стек), тем больше папок (вызовов методов) можно положить. Но если шкафов много (много потоков), большие шкафы могут не поместиться в комнату (память).\n\n> **На собеседовании.** Запомните: `-Xss` (или `-XX:ThreadStackSize`). Типичное значение по умолчанию -- 1 МБ. Увеличивают при `StackOverflowError`, уменьшают при большом количестве потоков для экономии памяти. Также можно задать размер стека программно через конструктор `Thread`. Для виртуальных потоков это неактуально.","","junior",[15,16,17,18,19],"JVM","стек","параметры запуска","-Xss","concurrency",[],null,{"title":23,"description":24,"ogTitle":25,"ogDescription":26,"keywords":27,"schemaAnswer":32,"featuredSnippetReady":33},"Параметр -Xss — размер стека потока JVM — Gymterview","Параметр запуска JVM -Xss задаёт размер стека для каждого потока. Пример: -Xss512k устанавливает стек размером 512 КБ.","-Xss — контроль размера стека потока","Параметр -Xss управляет размером стека каждого потока в JVM. По умолчанию зависит от платформы.",[28,29,30,31],"-Xss JVM","размер стека потока Java","JVM параметр стека","thread stack size JVM","Параметр -Xss. Например, -Xss512k устанавливает размер стека потока в 512 КБ.",true]