Сакупљање смећа на Јави: Све што треба да знате



Овај чланак о сакупљању смећа на Јави даје вам јасну представу о томе како то функционише, какви су типови и различите методе прикупљања смећа на Јави

је програмски језик опште намене и ако у случају да дођете до ситуације да у вашем програму постоје неискоришћени подаци, а не знате како да поступите са њима, Збирка смећа у Јави добро дође. Дакле, пишем овај чланак да бих вам помогао у руковању овим функцијама.

инсталирање пхп-а на Виндовс 10

Обрађиваћу теме следећим редоследом:





Хајде да почнемо!

Шта је сакупљање смећа на Јави?

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



Такође се сматра програмом који помаже у аутоматском управљању меморијом. Када покрећу се на ЈВМ-у, објекти се креирају на хрпи, што је заправо део меморије која је посвећена програму. На крају, неки предмети више неће бити потребни. Тхе Ђубретар проналази ове неискоришћене предмете и брише их како би ослободио мало меморије.

  • Програми који не додељују меморију могу се на крају прекинути када у систему више нема меморије за додељивање. За све ове програме се каже да цуре меморију.
  • Прикупљање смећа у Јави догађа се аутоматски током трајања програма, елиминишући потребу за прерасподјелом меморије и на тај начин избјегавајући цурење меморије.
  • Методе попут бесплатно() у Ц и делете () у Ц ++ се користе, али се у Јави изводи аутоматски. Тако, пружа боље управљање меморијом.

Хајде сада да схватимо како ово аутоматско сакупљање смећа функционише на Јави.

Белешка : За предмет се каже да испуњава услове за одвоз смећа ако је недоступан.



Како функционише Сакупљање смећа?

Сакупљање смећа је процес рада са Хеап меморијом и такође марка или идентификујте недостижне предмете и уништавајте их сабијањем.

Сакупљање смећа у Јави је аутоматски процес и програмер не мора изричито означавати објекте које треба избрисати. Имплементација углавном живи у . Сваки ЈВМ може применити сакупљање смећа. Једини услов је да треба да испуњава ЈВМ спецификацију.

Иако постоји много ЈВМ-ова, Орацле-а Жариште је далеко најчешћи јер нуди робустан и зрео скуп могућности одвоза смећа.

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

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

Сада да видимо које су различите врсте сакупљача смећа.

Врсте сакупљача смећа

ЈВМ пружа четири различита сакупљача смећа, сви генерацијски. Свака има своје предности и ограничења. Избор који ће сакупљач смећа користити лежи на кориснику и могу постојати бројне разлике у протоку и паузама апликација.

Постоје наиме 4 врсте сакупљача смећа.

  • Серијски сакупљач смећа (ГЦ) :Сви догађаји сакупљања смећа одвијају се серијски у једној нити. Збијање се врши након сваког одвоза смећа.
  • Паралелни / пропусни ГЦ: Вишеструки навоји се користе за мање / мање сакупљање смећа. Једна нит се користи за веће сакупљање смећа и збијање старе генерације. Такође, паралелна варијанта користи више нити за главно сакупљање смећа и збијање старе генерације.
  • ЦМС Цоллецтор :Вишеструки нити се користе за сакупљање ситног / мањег смећа користећи исти алгоритам као и Параллел. Већина сакупљања смећа је са више нити, али ЦМС се изводи истовремено са процесима апликација како би се догађаји у апликацији свели на минимум. Не врши се збијање.
  • Г1 колектор :Овај сакупљач смећа је у основи замишљен као замена за ЦМС. Паралелна је и паралелна попут ЦМС-а, али функционише сасвим другачије када се упореди са старијим сакупљачима смећа.

Хајде да схватимо предности сакупљања смећа у Јави.

Предности

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

Најбоље праксе

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

Још једна ствар коју треба приметити овде је да је ЦМС сакупљач смећа дизајниран да минимизира паузе што га чини идеалним за ГУИ апликације где је одзив веома важан. Додатно фино подешавање може се постићи променом величине гомиле или њених делова и мерењем ефикасности сакупљања смећа.

Погледајмо овај програм.

класа Едурека {инт а инт б јавна празнина сетДата (инт ц, инт д) {а = цб = д} јавна празнина сховДата () {Систем.оут.принтлн ('Вредност а =' + а) Систем.оут.принтлн ('Валуе оф б =' + б)} публиц статиц воид маин (Стринг аргс []) {Едурека е1 = нев Едурека () Едурека е2 = нев Едурека () е1.сетДата (1,2) е2.сетДата (3, 4) е1.сховДата () е2.сховДата () // Едурека е3 // е3 = е2 //е3.сховДата () // е2 = нулл //е3.сховДата () // е3 = нулл //е3.сховДата ()}}

У овом случају, то двојекреирају се објекти и две референтне променљиве. Ако додате још једну команду е3 = Нулл,две референтне променљиве указаће на исти објекат. А ако нема референце на променљиву, е3 = е2е3.сховДата () У овом тренутку нема референци које указују на објекат и он постаје подобан за сакупљање смећа.

Ово нас доводи до краја овог чланка „Прикупљање смећа на Јави“. Научили смо како да уклонимо неискоришћене предмете из гомиле и различите врсте колекције.

шта је преоптерећење функције у ц ++-у

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

Имате питање за нас? Молимо вас да га поменете у одељку за коментаре овог „Сакупљања смећа на Јави ' и јавићемо вам се у најкраћем могућем року.