Что такое сборка мусора в Java?

Что такое сборщик мусора?

Garbage Collector – это программа, которая автоматически управляет памятью, в которой де-распределение объектов обрабатывается Java, а не программистом. На языке программирования Java динамическое распределение объектов достигается с помощью нового оператора. Созданный объект использует некоторую память и память остается выделенной до тех пор, пока не будут ссылки на использование объекта.

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

Техника, которая выполняет это, называется сборкой мусора . Программы, которые не выделяют память, могут в конечном итоге сработать, когда в системе не будет выделено памяти. Говорят, что эти программы имеют утечки памяти.

Сбор мусора в Java происходит автоматически в течение всего срока службы программы, устраняя необходимость де-выделения памяти и тем самым избегая утечек памяти. На языке C ответственность программиста заключается в том, чтобы распределить выделенную память динамически с помощью функции free (). Именно здесь ведет управление памятью Java.

Примечание. Все объекты создаются в секции кучи памяти. Подробнее об этом в следующем учебнике.

Пример: Изучить механизм сбора мусора в Java

Шаг 1) Скопируйте следующий код в редактор.

Шаг 2) Сохраните, скомпилируйте и запустите код. Как показано на диаграмме, создаются два объекта и две контрольные переменные.

Шаг 3) Линия Uncomment # 20,21,22. Сохраните, скомпилируйте и запустите код.

Шаг 4) Как показано на диаграмме ниже, две ссылочные переменные указывают на один и тот же объект.

Шаг 5) Uncomment line # 23 и 24. Compile, Save & Run code

Шаг 6) Как показано на диаграмме ниже, s2 становится нулевым, но s3 все еще указывает на объект и не имеет права на сбор мусора java.

Шаг 7) Uncomment line # 25 и 26. Сохраните, скомпилируйте и запустите код.

Шаг 8). В этот момент нет ссылок, указывающих на объект, и они могут быть использованы для сбора мусора. Он будет удален из памяти, и нет способа вернуть его обратно.

Как удалить объект в Java?

1) Если вы хотите сделать свой объект подходящим для коллекции мусора, присвойте его ссылочной переменной значение null.

2) Примитивные типы не являются объектами. Им не может быть присвоено значение null.

0 ответы

Ответить

Хотите присоединиться к обсуждению?
Не стесняйтесь вносить свой вклад!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *