Вызов процесса, потока и метода из потока - их отношение к стеку - PullRequest
0 голосов
/ 23 декабря 2018

Согласно тому, что я понимаю как программист на Java:

Каждому потоку дается свой стек (для Java размер стека по умолчанию на поток равен 1M).Каждому методу, вызываемому из потока, присваивается кадр стека (просто непрерывная часть памяти стека потока), стек потока не имеет ничего, кроме стека фреймов .Я предполагаю, что процессу также предоставляется некоторый стек (так что каждый поток этого процесса получает часть своего стека).

Есть ли у процесса свой собственный стек или некоторый стек, который он дополнительно дает (части этого стека) в потоки?

PS Возник вопрос, когда я думал о escape-анализе: я узнал, что если объект (ссылка) никогда не выходит за пределы метода - он находится в стеке (не куча), если ссылка избегает одного метода, но используется только в одном потоке (= никогда не выходит из своего метода run()) - она ​​также находится в stack .

Это подразумевает, что процесс не имеет ограничений на размер своего "стека", но есть ограничение на количество потоков, которые я могу создать (разветвить / клонировать) из одного процесса (что эточисло обычно?) и минимальный размер стека потока существует.Поэтому я думаю, что стек для самого процесса не выделен и является «неограниченным» (100% зависит от выделения стека потока).

Связанный: "stack frame" = "стек вызовов"

...