# В Java есть два типа памяти. Они называются стеком и кучей соответственно.
Стек — это область памяти программы, поэтому все основные типы и ссылки на объекты хранятся в стеке.
Куча — это место, где виртуальная машина Java хранит объекты. Это огромная память. Когда вы создаете объект, виртуальная машина Java помещает его в кучу, а адрес созданного объекта — в стек.
Таким образом, ссылки на базовые типы и объекты хранятся в стеке; объекты хранятся в куче.
# Механизм сбора мусора в Java.
Когда вы создаете новый объект, Java выделяет необходимую память. Когда вы завершаете использование объекта, сборщик мусора Java освобождает вам память.
Сборка мусора выполняется в фоновом режиме в виде потоков, которые ищут объекты, не имеющие полезных ссылок. После обнаружения объекты уничтожаются, а память освобождается.
Сбор мусора осуществляется между виртуальными машинами Java. Обычно они выполняют одни и те же шаги. Сначала сборщик мусора получает снимок запущенных потоков и всех загруженных классов.
Затем все объекты, участвующие в потоке, помечаются как недавно использованные. Когда все объекты, которые могут быть задействованы, помечены, оставшиеся неотмеченные объекты отбрасываются.
Чтобы помочь виртуальной машине, рекомендуется заранее удалить некоторые объекты, которые больше не нужны. Этого можно добиться, установив для ссылки значение null.
например.:
Текст т = новый тест();
т.someAction();
//все готово
т = ноль;