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.