Sobes.tech
Junior — Middle

Uygulamalarda bellek sızıntılarına ne neden olur?

sobes.tech yapay zeka

AI'dan gelen yanıt

Uygulamalarda bellek sızıntıları, nesne veya verilere ayrılan belleğin artık ihtiyaç kalmadığında serbest bırakılmaması durumunda ortaya çıkar. iOS'ta bu genellikle şunlarla ilişkilidir:

  • Nesneler arasındaki döngüsel referanslar (retain cycle'lar), özellikle ARC (Otomatik Referans Sayımı) kullanılırken. Örneğin, iki nesne birbirine güçlü referanslarla bağlandığında, serbest bırakılmazlar.
  • Self'i güçlü referansla yakalayan kapanışların (closures) yanlış kullanımı.
  • Zamanlayıcılar, gözlemciler veya dosya tanıtıcıları gibi kaynakların serbest bırakılmaması.

Bir kapanış ile retain cycle örneği:

class ViewController {
    var closure: (() -> Void)?

    func setup() {
        closure = {
            print(self) // self güçlü şekilde yakalanır, döngü oluşturur
        }
    }
}

Sızıntıları önlemek için, kapanışlarda zayıf (weak) veya sahip olmayan (unowned) referanslar kullanılır ve nesnelerin yaşam döngüsü doğru şekilde yönetilir.