Junior — Middle
Ի՞նչ զարգացման փուլեր կարելի է առանձնացնել կառավարվող հիշողության օբյեկտների կյանքի ցիկլում։
sobes.tech AI
Պատասխան AI-ից
C#-ում կառավարվող հիշողության մեջ օբյեկտների կյանքի ցիկլը կարող է բաժանվել մի քանի փուլերի.
- Ստեղծում (Allocation) — օբյեկտը ստեղծվում է կառավարվող հողամասում (
heap)newօպերատորով: - Օգտագործում (Usage) — օբյեկտը օգտագործվում է ծրագրում, և նրա հղումները պահվում են փոփոխականներում:
- Աղբի հավաքում (Garbage Collection) — երբ այլ հղումներ չեն մնացել օբյեկտին, հավաքողը նշում է այն որպես հեռացման թեկնածու:
- Հիշողության ազատում (Finalization և Deallocation) — եթե օբյեկտը ունի
Finalizeֆինալիզատոր, այն կանչվում է հիշողությունը ազատելուց առաջ, ապա հիշողությունը ազատվում է:
Մեծ կարևորություն ունի — .NET-ի հավաքողը աշխատում է սերնդային (Gen 0, Gen 1, Gen 2) սկզբունքով, ինչը օպտիմալացնում է կատարողականությունը և մաքրման ժամանակը:
Օրինակ:
class MyClass {
~MyClass() {
// Ֆինալիզատոր, կանչվում է օբյեկտի հեռացման առաջ
}
}
var obj = new MyClass(); // Ստեղծում
// Օգտագործում obj
obj = null; // Օբյեկտը այլևս հասանելի չէ
// Հավաքողը ավելի ուշ ազատում է հիշողությունը