Главная » Java, Web » Сборщик мусора java

0

Ранее мы познакомились с тем, как создаются объекты. А как можно уничтожить объект? В языке Java уничтожение объектов происходит автоматически. Объект существует в памяти, доступ к объекту может быть осуществлен с использованием переменных, в которых хранится ссылка на объект. Что делать с объектом, если не существует переменных, содержащих ссылку на этот объект? Рассмотрим две инструкции: Student std = new Student("John Smith"); std = null;

В первой строке мы создаем новый объект и помещаем ссылку на этот объект в переменную std. В следующей строке мы изменяем значение переменной и теряем ссылку на только что созданный объект. Сейчас ссылки на этот объект нигде не существует. Программа не имеет возможности использовать этот объект. Память, в которой размещается объект, могла бы быть использована для других целей.

В Java используется сборщик мусора для того, чтобы очистить память от объектов, которые более не доступны для программы. Ответственность за то, чтобы определить, что является "мусором", т. е. какие объекты не доступны для программы, возлагается на систему. Это не является задачей программиста. В приведенном только что примере предельно ясно, какой объект становится мусором. В реальности дело обстоит значительно сложнее.

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

Во многих языках программирования ответственность за удаление мусора возлагается на программиста. Эта задача не представляется очень легкой, поскольку отслеживание того, как используется память, — занятие, которое приводит к появлению множества ошибок. Можно по ошибке удалить тот объект, на который есть еще ссылки. Другая проблема — утечка памяти. Она возникает тогда, когда программист пренебрегает необходимостью убирать ненужный мусор, т. е. те объекты, которые уже не используются. Это может приводить к тому, что память будет заполняться объектами, которые недоступны из программы.

Процесс уборки мусора в Java избавляет от всех этих неудобств.

Источник: Будилов В. А. Интернет-программирование на Java. — СПб.: БХВ-Петербург, 2003. — 704 е.: ил.

По теме:

  • Комментарии