Шта је сакупљање смећа на Јави?
Скупљање смећа у Јави је процес којим програми аутоматски извршавају управљање меморијом. Сакупљач смећа (ГЦ) проналази некоришћене објекте и брише их да би повратио меморију. У Јави се динамичка алокација објеката постиже употребом новог оператора који користи нешто меморије, а меморија остаје додељена док не постоје референце за употребу објекта.
Када нема референци на објекат, претпоставља се да више није потребан и меморија коју заузима објект може се повратити. Нема изричите потребе за уништавањем објекта јер Јава аутоматски уклања де-алокацију.
Техника која ово постиже позната је као Скупљање смећа . Програми који не додељују меморију могу се срушити на крају када у систему више нема меморије за додељивање. За ове програме се каже да цуре меморију.
Прикупљање смећа у Јави догађа се аутоматски током трајања програма, елиминишући потребу за прерасподјелом меморије и на тај начин избјегавајући цурење меморије.
На језику Ц, програмер је одговоран да динамички расподијели меморију додијељену помоћу функције фрее (). Овде води Јава управљање меморијом.Напомена: Сви објекти се креирају у одељку хеап меморије. О томе више у каснијем водичу.
Пример: Научити механизам сакупљача смећа на Јави
Корак 1) Копирајте следећи код у едитор.
цласс Студент {инт а;инт б;јавна празнина сетДата (инт ц, инт д) {а = ц;б = д;}публиц воид сховДата () {Систем.оут.принтлн ("Вредност а =" + а);Систем.оут.принтлн ("Вредност б =" + б);}публиц статиц воид маин (Стринг аргс []) {Студент с1 = нови студент ();Студент с2 = нови студент ();с1.сетДата (1,2);с2.сетДата (3,4);с1.сховДата ();с2.сховДата ();// Студент с3;// с3 = с2;//с3.сховДата ();// с2 = нулл;//с3.сховДата ();// с3 = нулл;//с3.сховДата ();}}
Корак 2) Спремите, компајлирајте и покрените код. Као што је приказано на дијаграму, креирају се два објекта и две референтне променљиве.
Корак 3) Унцоммент лине # 20,21,22. Спремите, компајлирајте и покрените код.
Корак 4) Као што је приказано на доњем дијаграму, две референтне променљиве упућују на исти објекат.
Корак 5) Унцоммент лине # 23 & 24. Саставите, сачувајте и покрените код
Корак 6) Као што је приказано на доњем дијаграму, с2 постаје нула, али с3 и даље показује на објекат и не испуњава услове за прикупљање јава смећа.
Корак 7) Унцоммент лине # 25 & 26. Снимите, компајлирајте и покрените код
Корак 8) У овом тренутку нема референци које воде на објекат и постаје прихватљиво за одвоз смећа. Биће уклоњен из меморије и не постоји начин да га вратите назад.
Како избрисати објекат у Јави?
1) Ако желите да свој објекат учини прихватљивим за Скупљање смећа, доделите његову референтну променљиву нули.
2) Примитивни типови нису објекти. Не може им се доделити ништа.