Junior — Middle
Чӣ гуна механизмҳои идоракунии автоматии хотира дар ҳолате, ки объект ба худ ишора мекунад, рафтор мекунад?
sobes.tech AI
Ҷавоб аз AI
Дар C# механизм автоматии идоракунии хотира (Garbage Collector, GC) асос ёфтааст ба ҳисоб кардани дастрасии объектҳо аз манбаъҳои реша.
Агар объект дорои истинод ба худ (истиноди худ) бошад, ин монеъ намешавад, ки ҷамъкунандаи партовҳо хотирасо озод кунад, агар ба он объект истинодҳои хориҷӣ набошад. GC графи объектҳоро таҳлил мекунад, аз манбаъҳои реша оғоз карда, ва ҳамаи объектҳои дастрасро нишон медиҳад. Объектҳое, ки танҳо тавассути истинодҳои циклӣ (аз ҷумла истинодҳои худ) дастрасанд, аммо аз решаҳо дастрас нестанд, ҳисоб мешаванд, ки дастрас нестанд ва ҷамъоварӣ мешаванд.
Аз ин рӯ, истиноди худ ба худ монеъ намешавад, ки объект ҷамъоварӣ шавад, агар дар барнома истифода нашуда бошад.
Масалан:
class Node {
public Node SelfReference;
}
var node = new Node();
node.SelfReference = node;
// Агар пас аз ин, node дигар истифода нашуда бошад ва дигар истинодҳо ба он набошанд,
// GC хотирасо озод мекунад, бо вуҷуди истиноди худ.