Sobes.tech
Junior

Bellek sızıntısı nedir ve nasıl oluşur?

sobes.tech yapay zeka

AI'dan gelen yanıt

Bellek sızıntısı, bir programın nesneler için bellek ayırdığı, ancak bunlar artık gerekmediğinde referansların silinmediği ve çöp toplayıcının bu belleği serbest bırakamadığı bir durumdur. iOS'ta, ARC (Otomatik Referans Sayımı) kullanıldığında, bellek sızıntıları genellikle döngüsel referanslar nedeniyle ortaya çıkar; örneğin, iki nesne birbirine güçlü referanslar aracılığıyla referans verdiğinde ve hiçbiri serbest bırakılmadığında.

Swift'te döngüsel referans örneği:

class A {
    var b: B?
}

class B {
    var a: A?
}

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

a.b = b
b.a = a
// Her iki nesne birbirine referans veriyor, ARC otomatik olarak serbest bırakamaz

Sızıntıları önlemek için, zayıf (weak) veya sahip olmayan (unowned) referanslar kullanılır; bunlar referans sayacını artırmaz ve nesnelerin doğru şekilde serbest bırakılmasını sağlar.