Приложение Java запускается с одной кучей для всех потоков. Каждый поток имеет свой собственный стек.
Когда приложение Java запущено, мы используем опцию JVM -Xms
и -Xmx
для управления размером кучи и -Xss
для управления размером стека.
Я понимаю, что создаваемая куча становится "управляемой" памятью JVM, и все создаваемые объекты помещаются туда.
Но как работает создание стека? Создает ли Java стек для каждого потока при его создании? Если да, то где именно стек находится в памяти? Это, конечно, не в "управляемой" куче.
Создает ли JVM стек из собственной памяти или предварительно выделяет раздел управляемой области памяти для стека? Если да, то как JVM знает, как могут быть созданы потоки?