Bellek yığını dökümü yakalama (Görünümler)

Jetpack Compose uygulaması

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 FragmentManager içermeyen ancak yine de başvurulan Fragment örnekleri.

Filtrenin aşağıdaki durumlarda yanlış pozitif sonuçlar verebileceğini unutmayın:

  • Bir Fragment oluş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, Drawable ve Activity veya Context kapsayıcısına referans içerebilecek diğer nesnelere yönelik uzun süreli referanslar.
  • Activity örneği tutabilen Runnable gibi 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, Context veya View nesnesini sızdırmasına neden olabilir. Bunun nedeni, sistemin Activity nesnesini 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.