Sobes.tech
Junior — Middle

Dinamik yaddaş idarəsində hansı növ yaddaş sızmaları baş verə bilər?

sobes.tech Süni İntellekt

AI-dan cavab

Dinamik yaddaş idarə edilməsində aşağıdakı növ yaddaş sızmaları baş verə bilər:

  • Unutulmuş istinadlar səbəbindən sızma: obyektlər yaddaşda qalır, çünki onlara hələ də istinadlar var, baxmayaraq ki, artıq lazım deyillər.
  • Dairəvi istinadlar: obyektlər bir-birinə istinad edir və çöp toplayıcı döngü aşkarlamasını dəstəkləməzsə, onları sərbəst buraxa bilməz.
  • Yönetilməyən unmanaged resurslar: əgər C#-da unmanaged resurslar (məsələn, deskriptorlar, fayllar) istifadə olunursa və onlar açıq şəkildə Dispose və ya finalizer vasitəsilə sərbəst buraxılmırsa.

Dairəvi istinad səbəbindən sızma nümunəsi:

class Node {
    public Node Next;
}

Node a = new Node();
Node b = new Node();
a.Next = b;
b.Next = a; // dairə
// Əgər çöp toplayıcı döngü aşkarlamasını dəstəkləməzsə, obyektlər sərbəst buraxılmayacaq

Sızmaları qarşısını almaq üçün, istinadları düzgün idarə etmək və unmanaged resursları sərbəst buraxmaq vacibdir.