Middle
Типҳои истинод дар куҷо нигоҳ дошта мешаванд ва дар вақти иҷрои барнома бо онҳо чӣ мешавад?
sobes.tech AI
Ҷавоб аз AI
Референс типҳо дар хешт (Heap) нигоҳ дошта мешаванд.
Дар вақти иҷрои барнома, чунин рӯй медиҳад:
- Эҷод: Вақте ки объекти типи референс (масалан,
new MyClass()) эҷод мешавад, хотира барои ин объект дар хешт ҷудо карда мешавад. Варақаи, ки онро нигоҳ медорад, ба ин қисмати хотира ишора мекунад. - Дастрасӣ: Дастрасӣ ба майдонҳо ва усулҳои объект тавассути ин ишора сурат мегирад.
- Ҷамъоварии партовҳо (Garbage Collection): Вақте ки объект дигар аз ҷониби ягон қисми фаъолонаи барнома дастрас нест (на ба он ишораҳо ҳастанд), ҷамъоварии партовҳо метавонад хотираи онро озод кунад. Ин раванд автоматӣ "дар пасзамина" сурат мегирад ва талаб намекунад дахолати ошкоро аз тарафи таҳиягар. Ҷамъоварии партовҳо мунтазам хештро скан мекунад, объектҳои дастраснашавандаро пайдо мекунад ва хотирашонро ба системаи баргардонданӣ медиҳад.
- Таҳрир: Мазмуни объект дар хешт метавонад тағир ёбад. Агар чандин тағирёбандаҳо ба як объект ишора кунанд, тағирот дар ҳолати он тавассути дигар тағирёбандаҳо ҳам мушоҳида мешавад.
- Иваз кардани ишора: Тағирёбандаи ишора метавонад барои ишора ба объекти дигар ё
nullтакрор таъин шавад.
Масалан:
// Эҷоди объект String (сатрҳо - типи референс) дар хешт
String myString = "Hello";
// Тағирёбанда myString_2 ба ҳамин объект ишора мекунад
String myString_2 = myString;
// Эҷоди объект навии String дар хешт ва такрор таъин кардани ишора
myString = "World";
// Акнун myString ба объект дигар ишора мекунад, ва myString_2 ба кӯҳнаи он