Sobes.tech
Junior — Middle

Android uygulamalarında bellek sızıntılarına neden olabilecek durumlar veya faktörler örnekleri verebilir misiniz?

sobes.tech yapay zeka

AI'dan gelen yanıt

Android uygulamalarında bellek sızıntılarının temel nedenleri:

  • Activity veya View bağlamına kalıcı referanslar. Örneğin, bir Activity’ye referans tutan statik değişkenler, çöp toplayıcının onu toplamasını engeller.

  • Dinleyiciler ve geri çağırmaların yanlış kullanımı. Bir dinleyici kaydı kaldırılmazsa, nesneye referans tutmaya devam edebilir.

  • Dış sınıfa dolaylı referans tutan anonim iç sınıflar ve lambda ifadeleri kullanımı.

  • Kaynakların yanlış yönetimi, örneğin, kapatılmamış Cursor, InputStream, Bitmap.

  • Activity’ye referans veren gecikmeli veya mesaj içeren Handler kullanımı, ancak yok edilirken temizlenmez.

  • Büyük nesnelerin sınırlandırılmamış önbelleğe alınması.

Statik referans nedeniyle oluşan sızıntı örneği:

class MyActivity : AppCompatActivity() {
    companion object {
        var leakedReference: MyActivity? = null
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        leakedReference = this // Activity serbest bırakılmaz
    }
}

Sızıntıları önlemek için, nesnelerin yaşam döngüsünü doğru yönetmek ve kaynakları serbest bırakmak önemlidir.