Учебники

28) Сборка мусора

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

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

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

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

Сборка мусора в Java происходит автоматически при жизни программы, что устраняет необходимость в выделении памяти и, тем самым, предотвращает утечки памяти.

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

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

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

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

  1. class Student{
  2. int a;
  3. int b;
  4.  
  5. public void setData(int c,int d){
  6. a=c;
  7. b=d;
  8. }
  9. public void showData(){
  10. System.out.println("Value of a = "+a);
  11. System.out.println("Value of b = "+b);
  12. }
  13. public static void main(String args[]){
  14. Student s1 = new Student();
  15. Student s2 = new Student();
  16. s1.setData(1,2);
  17. s2.setData(3,4);
  18. s1.showData();
  19. s2.showData();
  20. //Student s3;
  21. //s3=s2;
  22. //s3.showData();
  23. //s2=null;
  24. //s3.showData();
  25. //s3=null;
  26. //s3.showData();
  27. }
  28. }

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

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

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

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

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

Шаг 5) Раскомментируйте строки # 23 и 24. Скомпилируйте, сохраните и запустите код.

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

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

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

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

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

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

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

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

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