Что такое сборка мусора в Java?
Сборка мусора в Java - это процесс, с помощью которого программы автоматически управляют памятью. Сборщик мусора (GC) находит неиспользуемые объекты и удаляет их, чтобы освободить память. В Java динамическое распределение памяти для объектов достигается с помощью оператора new, который использует некоторую память, и память остается выделенной до тех пор, пока не появятся ссылки для использования объекта.
Когда нет ссылок на объект, предполагается, что он больше не нужен, и память, занятая объектом, может быть освобождена. Нет явной необходимости уничтожать объект, поскольку Java автоматически выполняет отмену выделения.
Техника, которая выполняет это, известна как сборка мусора . Программы, которые не выделяют память, могут в конечном итоге дать сбой, если в системе не останется памяти для выделения. Считается, что эти программы имеют утечку памяти.
Сборка мусора в Java происходит автоматически в течение всего жизненного цикла программы, что устраняет необходимость освобождать память и тем самым предотвращает утечки памяти.
В языке C ответственность за освобождение памяти, выделяемой динамически, с помощью функции free () лежит на программисте. Это то, к чему ведет управление памятью Java.Примечание. Все объекты создаются в разделе кучи памяти. Подробнее об этом в следующем уроке.
Пример: изучение механизма сборщика мусора на Java
Шаг 1) Скопируйте следующий код в редактор.
class Student {int a;int b;public void setData (int c, int d) {а = с;b = d;}public void showData () {System.out.println ("Значение a =" + a);System.out.println ("Значение b =" + b);}public static void main (String args []) {Студент s1 = новый Студент ();Студент s2 = новый Студент ();s1.setData (1,2);s2.setData (3,4);s1.showData ();s2.showData ();// Студент s3;// s3 = s2;//s3.showData ();// s2 = null;//s3.showData ();// s3 = null;//s3.showData ();}}
Шаг 2) Сохраните, скомпилируйте и запустите код. Как показано на схеме, создаются два объекта и две ссылочные переменные.
Шаг 3) Раскомментируйте строку №20,21,22. Сохраните, скомпилируйте и запустите код.
Шаг 4) Как показано на схеме ниже, две ссылочные переменные указывают на один и тот же объект.
Шаг 5) Раскомментируйте строки № 23 и 24. Скомпилируйте, сохраните и запустите код.
Шаг 6) Как показано на диаграмме ниже, s2 становится нулевым, но s3 все еще указывает на объект и не подходит для сборки мусора java.
Шаг 7) Раскомментируйте строки № 25 и 26. Сохраните, скомпилируйте и запустите код.
Шаг 8) На этом этапе нет ссылок, указывающих на объект, и становится доступным для сборки мусора. Он будет удален из памяти, и восстановить его будет невозможно.
Как удалить объект в Java?
1) Если вы хотите сделать свой объект подходящим для сборки мусора, присвойте его ссылочной переменной значение null.
2) Примитивные типы не являются объектами. Им нельзя присвоить значение null.