Sobes.tech
Middle

Xotira boshqaruvida resurslarni tozalash bosqichlari qanday?

sobes.tech AI

AIdan javob

.NET'deki hafıza idarəetməsi aşağıdakı resursların təmizlənmə mərhələlərini əhatə edir:

  1. İşarələmə mərhələsi (Marking): Çöp toplayıcı, kök obyektlərdən (yığım dəyişənləri, statik dəyişənlər və qeydiyyatlar) əlçatan olan obyektləri müəyyən edir. Əlçatan olmayan obyektlər toplanmaq üçün işarələnir.

  2. Yerləşdirmə mərhələsi (Relocating/Compacting): Əlçatan obyektlər yaddaşda hərəkət etdirilir (sıkışdırılır), ardıcıl boşluq yaradılır və parçalanma azaldılır. Bu mərhələdə, hərəkət etdirilən obyektlərə işarə edən göstəricilər yenilənir. Bu mərhələ yalnız fon rejimi olmayan yığmalarda mövcuddur.

  3. Təmizləmə mərhələsi (Sweeping): Toplama üçün işarələnmiş obyektlərin Finalize metodları çağırılır, əgər onlar təyin olunubsa. Sonra, bu obyektlərin tutduğu yaddaş azad edilir.

Finalize istifadə nümunəsi (tövsiyə edilmir, IDisposable istifadə etmək daha yaxşıdır):

public class ResourceHolder
{
    // Azad edilməli olan resurs
    private System.IO.StreamWriter _writer;

    public ResourceHolder(string filePath)
    {
        _writer = new System.IO.StreamWriter(filePath);
    }

    // Çöp toplayıcı tərəfindən çağırılan finalizasiya metodu
    ~ResourceHolder()
    {
        // İdarə olunmayan resursu azad et
        _writer?.Dispose();
    }

    // Digər metodlar...
}