Sobes.tech
Junior — Middle

Ի՞նչ զարգացման փուլեր կարելի է առանձնացնել կառավարվող հիշողության օբյեկտների կյանքի ցիկլում։

sobes.tech AI

Պատասխան AI-ից

C#-ում կառավարվող հիշողության մեջ օբյեկտների կյանքի ցիկլը կարող է բաժանվել մի քանի փուլերի.

  1. Ստեղծում (Allocation) — օբյեկտը ստեղծվում է կառավարվող հողամասում (heap) new օպերատորով:
  2. Օգտագործում (Usage) — օբյեկտը օգտագործվում է ծրագրում, և նրա հղումները պահվում են փոփոխականներում:
  3. Աղբի հավաքում (Garbage Collection) — երբ այլ հղումներ չեն մնացել օբյեկտին, հավաքողը նշում է այն որպես հեռացման թեկնածու:
  4. Հիշողության ազատում (Finalization և Deallocation) — եթե օբյեկտը ունի Finalize ֆինալիզատոր, այն կանչվում է հիշողությունը ազատելուց առաջ, ապա հիշողությունը ազատվում է:

Մեծ կարևորություն ունի — .NET-ի հավաքողը աշխատում է սերնդային (Gen 0, Gen 1, Gen 2) սկզբունքով, ինչը օպտիմալացնում է կատարողականությունը և մաքրման ժամանակը:

Օրինակ:

class MyClass {
    ~MyClass() {
        // Ֆինալիզատոր, կանչվում է օբյեկտի հեռացման առաջ
    }
}

var obj = new MyClass(); // Ստեղծում
// Օգտագործում obj
obj = null; // Օբյեկտը այլևս հասանելի չէ
// Հավաքողը ավելի ուշ ազատում է հիշողությունը