Сборщик мусора на Java — это программа, которая автоматически управляет памятью, в которой перераспределение объектов обрабатывается Java, а не программистом. В языке программирования Java динамическое размещение объектов достигается с помощью оператора new. Однажды созданный объект использует некоторую память, и память остается выделенной, пока не появятся ссылки на использование объекта.
Когда нет ссылок на объект, предполагается, что он больше не нужен, и память, занятая объектом, может быть восстановлена. Нет явной необходимости уничтожать объект, поскольку Java автоматически обрабатывает удаление.
Техника, которая выполняет это, известна как сборка мусора. Программы, которые не освобождают память, могут в конечном итоге аварийно завершить работу, если в системе не осталось памяти для выделения. Эти программы, как говорят, имеют утечку памяти.
Сборка мусора в Java происходит автоматически при жизни программы, что устраняет необходимость в выделении памяти и, тем самым, предотвращает утечки памяти. На языке Си программист несет ответственность за динамическое выделение памяти, выделенной с помощью функции free().
Примечание. Все объекты создаются в разделе кучи памяти.
Изучение механизма сборки мусора в Java
Шаг 1) Скопируйте следующий код в редактор.
class Student{
int a;
int b;
public void setData(int c,int d){
a=c;
b=d;
}
public void showData(){
System.out.println("Value of a = "+a);
System.out.println("Value of b = "+b);
}
public static void main(String args[]){
Student s1 = new Student();
Student s2 = new Student();
s1.setData(1,2);
s2.setData(3,4);
s1.showData();
s2.showData();
//Student 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 все еще указывает на объект и не подходит для сборки мусора.

Шаг 7) Раскомментируйте строку # 25 и 26. Сохраните, скомпилируйте Выполните код
Шаг 8) На данный момент нет ссылок, указывающих на объект, и он становится пригодным для сбора мусора. Он будет удален из памяти, и нет способа вернуть его обратно.

Как удалить объект?
1) Если вы хотите сделать свой объект пригодным для сборки мусора, присвойте его ссылочной переменной значение null.
2) Примитивные типы не являются объектами. Им нельзя присвоить null.

