Шта је Јава Гарбаге Цоллецтор? - Водич за Јава Гарбаге Цоллецтор

Преглед садржаја:

Anonim

Шта је Јава Гарбаге Цоллецтор?

Сакупљач смећа је демонска нит која ослобађа меморију током извођења. Скупљање смећа може се изразити и рециклажом памћења. Углавном се у ЈВМ-у користи орацле хотспот сакупљач смећа због своје ефикасности. Подручје меморије у ЈВМ-у где се стварају објекти назива се хеап. Хеап је подељен на два дела:

  1. Простор младе генерације
  2. Стари / затечени генерацијски простор

Млада генерација је поново подељена у 3 дела

  1. Еден простор
  2. Сурвивор Фром
  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 усмјерени су на нулл па се чувају у Еден простору с нулл и нереференцираним вриједностима
  • Систем гц () ће позвати демонску нит сакупљања смећа и оба објекта су избрисана из простора.

Предлози и недостаци

Испод су неки од предности и недостатака Јава Гарбаге Цоллецтор:

Прос од гц:

  • Скупљање смећа повећава ефикасност меморије јер ће обрисати све неискориштене и нулл објекте
  • Скупљање смећа је аутоматски процес, тако да програмер можда неће водити рачуна о томе, јер се на другим језицима без програмера за одвоз смећа мора побринути за неухватљив проблем са меморијом.

Цонс оф гц:

  • Сакупљач смећа покреће главну гц функцију која ће се кретати кроз читав простор гомиле, чинећи ваш програм полако брзину за неколико секунди.
  • Овај процес ће требати више времена за процесор чинећи систем кода споријим.
  • Ако радите на апликацији која захтева огромну меморију, користите ЈВМ заставе на располагању.
  • Ако је простора за хрпу пуно и предмете се не може превлачити или додавати даље, Јава избацује из грешке у меморији што ће успорити целу апликацију и такође може проузроковати цурење меморије.

Препоручени чланци

Ово је водич за шта је Јава Гарбаге Цоллецтор ?. Овде смо расправљали о њеном раду заједно са функцијама, примером, предностима и недостацима Јава сакупљача смећа. Такође можете погледати следеће чланке да бисте сазнали више -

  1. Конструктор и деструктор на Јави
  2. Деструктор на Јави
  3. Ц # вс Јава Перформанце
  4. Шта је ЈВМ?