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