Шта је Јава Гарбаге Цоллецтор?
Сакупљач смећа је демонска нит која ослобађа меморију током извођења. Скупљање смећа може се изразити и рециклажом памћења. Углавном се у ЈВМ-у користи орацле хотспот сакупљач смећа због своје ефикасности. Подручје меморије у ЈВМ-у где се стварају објекти назива се хеап. Хеап је подељен на два дела:
- Простор младе генерације
- Стари / затечени генерацијски простор
Млада генерација је поново подељена у 3 дела
- Еден простор
- Сурвивор Фром
- Сурвивор То
Дубље објашњење је дато у наредним тачкама. На пример, ако сте направили кеш меморију у свом програму и ако је предмеморирани објекат преживео много циклуса ГЦ-а, онда то прелази у стару генерацију. ГЦ тражи предмете који више нису потребни програму и уништава их.
Зашто сакупљач смећа?
Пре Јаве, два најпопуларнија језика су била Ц и Ц ++. У Ц смо наишли на цаллоц (), маллоц (), реаллоц () који ће доделити међуспремник, а у Ц ++ имамо деструкторе. Све ове функције су за функцију која се зове управљање меморијом. Јава нуди Гарбаге Цоллецтор као аутоматско управљање меморијом из главна два разлога:
- Неки створени објекти постају недоступни
- Упућивања старих објеката на младе предмете постоје само у малом броју.
Најбоља пракса за коришћење сакупљача смећа је постављање застава на ЈВМ.
Дозволите ми да вам дам пример за недоступне предмете
//class code
int i = 1;
if(i == 1)(
String s = abc;
System.out.println(s);
)
//class code
У горњем примеру, Јава ће креирати стринг објект и опсег тог објекта је управо у томе ако се блок не може користити изван. Стога, када сакупљање смећа пређе преко ове класе, означиће 'с' недоступним и некоришћеним објектом и избрисати га.
Функције у сакупљачу смећа
- Ознака: Почиње од коријенског чвора ваше апликације (главне), хода графиконима објеката, означава објекте који су достижни као живот.
- Делете / Свееп: Брисање недоступних објеката. Када ГЦ обрише предмете, ствара рупу у хрпи чинећи је недоследном. Тако се користи сабијање.
- Збијање: Компактирајте меморију померајући се око објеката и обележавајући расподелу непрекидно него фрагментирану. То је дуготрајан задатак.
Како ради Јава Гарбаге Цоллецтор?
- Постоје две врсте објекта:
Ливе Објецтс: Доступно (референце из другог објекта)
Мртви објекти: Недоступан (не односи се нигде)
- Сви новостворени предмети створени су у простору Едина (простора младе генерације).
- Једном када се простор Еден напуни, програм минорГЦ () покреће се на простору младе генерације који обележава све неискориштене или мртве објекте и брише их из меморије.
- Предмети који су преживели овај ГЦ циклус биће пресељени у Сурвивор Фром Спаце. Исти се поступак понавља и овог пута, када су предмети померени из Еденског простора у Сурвивор. Из свемира, ГЦ проверава да ли је пун, мртви објекти су ослобођени, а преживели предмети ће такође бити премештени у Сурвивор.
- Овај се поступак понавља и ако су неки предмети преживели праг не од ГЦ циклуса, ти се објекти премештају у простор старе генерације.
- У овом сценарију, ЈВМ покреће мајорГЦ () функцију која пролази кроз комплетан простор хеапије, идентифицира / означава неискориштене (нулл или деад) објекте и брише све те објекте.
- Запамтите, бришући предмете из простора из хрпе створиће рупе у меморији узрокујући цурење меморије. Да би се избегао такав сценарио, сакупљач смећа спроводи сабијање меморијског простора
Примери сакупљача смећа на Јави
Пример систем.гц ():
class Demo (
public void finalize()(
System.out.println(“Object”);
)
public static void main(String args())(
Demo obj1 = new Demo();
Demo obj2 = new Demo();
obj1 = null;
obj2 = null;
System.gc();
)
)
Излаз:
Објект
Објашњење горњег кода
- У горе наведеном коду, два објекта обј1 и обј2 усмјерени су на нулл па се чувају у Еден простору с нулл и нереференцираним вриједностима
- Систем гц () ће позвати демонску нит сакупљања смећа и оба објекта су избрисана из простора.
Предлози и недостаци
Испод су неки од предности и недостатака Јава Гарбаге Цоллецтор:
Прос од гц:
- Скупљање смећа повећава ефикасност меморије јер ће обрисати све неискориштене и нулл објекте
- Скупљање смећа је аутоматски процес, тако да програмер можда неће водити рачуна о томе, јер се на другим језицима без програмера за одвоз смећа мора побринути за неухватљив проблем са меморијом.
Цонс оф гц:
- Сакупљач смећа покреће главну гц функцију која ће се кретати кроз читав простор гомиле, чинећи ваш програм полако брзину за неколико секунди.
- Овај процес ће требати више времена за процесор чинећи систем кода споријим.
- Ако радите на апликацији која захтева огромну меморију, користите ЈВМ заставе на располагању.
- Ако је простора за хрпу пуно и предмете се не може превлачити или додавати даље, Јава избацује из грешке у меморији што ће успорити целу апликацију и такође може проузроковати цурење меморије.
Препоручени чланци
Ово је водич за шта је Јава Гарбаге Цоллецтор ?. Овде смо расправљали о њеном раду заједно са функцијама, примером, предностима и недостацима Јава сакупљача смећа. Такође можете погледати следеће чланке да бисте сазнали више -
- Конструктор и деструктор на Јави
- Деструктор на Јави
- Ц # вс Јава Перформанце
- Шта је ЈВМ?