Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> java

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

Что такое сборка мусора в 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){
    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 по-прежнему указывает на объект и не подходит для сборки мусора Java.

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

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

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

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

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


java

  1. Операторы Java
  2. Java-интерфейс
  3. Java-проба с ресурсами
  4. Java-аннотации
  5. Статическая переменная в Java:что такое статический блок и метод [пример]
  6. Интерфейс против абстрактного класса в Java:в чем разница?
  7. Перегрузка конструктора в Java:что это такое и примеры программ
  8. Java — структура коллекций
  9. Java 10 — расширенная сборка мусора
  10. Java 10 — выделение кучи