хранится - где хранятся локальные переменные java



Выделение памяти Java(Stack) для локальных переменных (2)

Каждый поток имеет свой собственный стек .

  • Всякий раз, когда вы используете new , объект создается в куче .
  • Локальные переменные хранятся в стеке. Это включает в себя примитивы (например, int ) и ссылки на любые созданные объекты. Сами фактические объекты не создаются в стеке, как я уже упоминал, когда вы используете new они будут создаваться в куче.

У меня есть вопрос, что новый STACK создается для каждого метода?

Тот же стек используется при вызове метода. Метод создаст свой собственный маленький раздел в стеке, называемый «стековый фрейм», который используется для хранения его локальных переменных.

Это так же, как стопка пластин, когда метод называется пластиной, добавляется к вершине стека ( фреймом стека ), и когда этот метод заканчивается, пластина удаляется из стека. Все локальные переменные этого метода будут уничтожены с ним, но фактические объекты, созданные с new , не будут.

Сборщик мусора JVM позаботится об уничтожении объектов в куче (созданных с new ), когда увидит, что они вам больше не нужны.

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

  1. Я читал о куче и стеке памяти для экземпляров объекта и локальных переменных. У меня есть вопрос, что новый STACK создается для каждого метода? или для каждого класса один стек используется целым классом ??
  2. Я читал, что ОДИН СТЕК создается каждым потоком Что означает

Спасибо, Махавир


Answer #1

Конечно, Java-сборщик мусора всегда заботится о куче, когда он получает шанс быть выполненным, поэтому он ищет только потерянные объекты и стирает их, поэтому ключевое слово NEW в java всегда создает новые объекты в памяти кучи.





java