Выделение памяти в стеке и удаление локальных переменных - PullRequest
0 голосов
/ 06 октября 2019

Я новичок в Java-программировании и пытаюсь понять, как память распределяется в стеке. Я читал, что во время компиляции хранятся методы, содержащие локальные переменные. Как только методы используются, эти локальные переменные удаляются из стека. Мой вопрос в том, что происходит, когда я снова вызываю тот же метод. Если память была выделена во время компиляции и когда метод был выполнен и удален из стека, что произойдет, если я вызову метод снова? Спасибо.

Выделение памяти. Стек. Heap.

void somefunction (enter code here) {Member m;}

1 Ответ

1 голос
/ 06 октября 2019

Стек выделяется для каждого потока. Когда вы вводите метод, новый слой (официально называемый фреймом) добавляется к трассировке стека с соответствующими переменными. После завершения метода этот «слой» удаляется из трассировки стека.

Если вы введете этот метод снова, он просто добавит его снова, с нуля и так далее. Если вы вызываете его рекурсивно, у вас будет несколько слоев с одним и тем же методом.

...