Sobes.tech
Junior

Yaddaş sızıntısı nədir və necə yaranır?

sobes.tech Süni İntellekt

AI-dan cavab

Yaddaş axını, proqramın obyektlər üçün yaddaş ayırdığı, lakin onlar artıq lazım olmadıqda, onlara istinadların silinmədiyi və çöp toplayıcısının bu yaddaşı sərbəst buraxa bilmədiyi vəziyyətdir. iOS-da, ARC (Avtomatik İstinad Sayımı) istifadə olunduqda, yaddaş axınları tez-tez döngüvi istinadlar səbəbindən baş verir; məsələn, iki obyekt bir-birinə güclü istinadlar vasitəsilə istinad edirsə və heç biri sərbəst buraxılmırsa.

Swift-də döngüvi istinad nümunəsi:

class A {
    var b: B?
}

class B {
    var a: A?
}

let a = A()
let b = B()

a.b = b
b.a = a
// Hər iki obyekt bir-birinə istinad edir, ARC onları avtomatik sərbəst buraxa bilməz

Sızmaları qarşısını almaq üçün, zəif (weak) və ya mülkiyyətsiz (unowned) istinadlar istifadə olunur; bunlar istinad sayını artırmır və obyektlərin düzgün şəkildə sərbəst buraxılmasına imkan verir.