Bu sayfada, görünüme dayalı düzenlere özgü bellek sızıntılarını bulma ve tetikleme hakkında bilgiler yer almaktadır. Yığın dökümlerini yakalama ve analiz etme ile ilgili temel bilgiler için Yığın dökümü yakalama başlıklı makaleyi inceleyin.
Bellek sızıntılarını bulma
Bellek sızıntılarıyla ilişkili olabilecek sınıfları hızlıca filtrelemek için sınıf açılır listesini açın ve Etkinlik/parça sızıntılarını göster'i seçin. Android Studio, uygulamanızdaki Activity ve Fragment örnekleri için bellek sızıntılarını gösterdiğini düşündüğü sınıfları gösterir. Filtrenin gösterdiği veri türleri şunlardır:
- Yok edilen ancak hâlâ başvurulan
Activityörnekleri. - Geçerli bir
FragmentManageriçermeyen ancak yine de başvurulanFragmentörnekleri.
Filtrenin aşağıdaki durumlarda yanlış pozitif sonuçlar verebileceğini unutmayın:
- Bir
Fragmentoluşturuldu ancak henüz kullanılmadı. Fragment,FragmentTransaction'ın parçası olarak değil, önbelleğe alınıyor.
Bellek sızıntılarını daha manuel bir şekilde aramak için sınıf ve örnek listelerine göz atarak büyük Retained Size (Saklanan Boyut) değerine sahip nesneleri bulun. Aşağıdakilerden kaynaklanan bellek sızıntılarını arayın:
Activity,Context,View,DrawableveActivityveyaContextkapsayıcısına referans içerebilecek diğer nesnelere yönelik uzun süreli referanslar.Activityörneği tutabilenRunnablegibi statik olmayan iç sınıflar.- Nesneleri gereğinden uzun süre tutan önbellekler.
Olası bellek sızıntıları bulduğunuzda, ilgilendiğiniz örneğe veya kaynak kodu satırına gitmek için Örnek Ayrıntıları'ndaki Alanlar ve Referanslar sekmelerini kullanın.
Test için bellek sızıntılarını tetikleme
Uygulamanızda test etmek için bellek sızıntılarını tetiklemek istiyorsanız aşağıdaki yöntemlerden birini kullanabilirsiniz:
- Cihazı farklı etkinlik durumlarındayken dikeyden yataya ve tekrar dikeye birden çok kez döndürün. Cihazın döndürülmesi genellikle bir uygulamanın
Activity,ContextveyaViewnesnesini sızdırmasına neden olabilir. Bunun nedeni, sisteminActivitynesnesini yeniden oluşturmasıdır. Uygulamanız bu nesnelerden birine başka bir yerde referans tutuyorsa sistem bu nesneyi çöp toplama işlemine tabi tutamaz. - Farklı etkinlik durumlarındayken uygulamanız ile başka bir uygulama arasında geçiş yapın. Örneğin, ana ekrana gidin, ardından uygulamanıza geri dönün.