Leak Canary nedir?

Erman Derici
Huawei Developers - Türkiye
3 min readMay 10, 2024
Leak Canary

Merhabalar,

Bu makalede Leak Canary nedir ve Android uygulamamızın performansını nasıl arttırabiliriz birlikte inceleyeceğiz.

Giriş

Android uygulamamızı geliştirirken hepimiz farkedilir derecede büyük performans sorunları ile karşılaşmışızdır. Bu sorunlar basit ve ufak memory leaklerden başlayıp büyük Application Not Responding (ANR) dediğimiz uygulamanın donduğu sorunlar olabilir. Memory leakleri bulması zor olabilir ve bulmak için bütün kodunuzun üstünden geçmek can sıkıcı ve yorucu bir iş. İşte burda Leak Canary devreye giriyor.

Leak Canary

Leak Canary uygulama çalışırken uygulamanızı inceleyip size özet bir rapor çıkartan ufak bir dependencydir.

Uygulamanıza eklemek şu satır yeterlidir:

dependencies {
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.14'
}

Dikkat edilmesi gereken bir nokta, bu dependency debug aşaması içindir. Uygulama yayımlandıktan sonra Leak Canary kullanılmamaktadır.

Nasıl kullanırım?

Leak Canary uygulamanız çalışırken arkaplanda sürekli çalışır ve herhangi bir memory leak ile karşılaşıldığı zaman kendi oluşturduğu rapora ekler. Uygulamanızda arada sırada şöyle bildirimler görebilirsiniz:

Leak örneği
Leak örneği

Bu bildirimler demek oluyor ki uygulamamızda birden fazla memory leak var. Leak Canary bu memory leak sayısı belirli bir sayıya gelene kadar bekliyor ve bu sayıya ulaşıldıktan sonra hepsini birlikte raporluyor.

Leak Canary şu leakleri tespit edebiliyor:

  • Yok edilmiş Activity
  • Yok edilmiş Fragment
  • Yok edilmiş Services
  • Yok edilmiş Fragment View
  • Temizlenmiş View Models

Bu bildirimlere tıklayarak veya Leak Canary’i kendiniz açarak raporlanan leakleri görebilirsiniz:

Bulunan leakler

Bu sayfada uygulamanızda bulunan leakleri görebilir ve detaylarını inceyebilirsiniz.
Burdaki referansların ve problemlerin tespiti ve çözümü nispeten daha kolay olabilir. Eğer daha zor bir leak ile karşılaştıysanız kendinizin manuel bir şekilde Leak Canary’e leak olduğunu düşündüğünüz objenin takip edilmesini söylemeniz gerekiyor. Fakat bu biraz daha ileri seviye bir konu olduğu için bu makalede değinmeyeceğim. İlginizi çekiyor ise aşağıda referanslar kısmından inceleyebilirsiniz.

Leak detayları

Sonuç

Leak Canary uygulamamıza nasıl eklenir ve memory leakleri bize nasıl gösterir bunu beraber görmüş olduk.
En yaygın memory leakler view veya activity sınıflarına yapılan referanslardan oluşur ve çözümleri nispeten daha kolaydır. Fakat unutmamanız gerekiyor ki Leak Canary bu memory leakleri bulmak için bir araçtır, bizim için bu problemleri çözmez.

--

--