Flutter’da Memory Leak nasıl tespit edilir?

Merhabalar. Flutter ile ilgili bilgilendirici yazılara bir süredir ara vermiştim fakat yeniden başlıyorum. 🙂 Bu yazının konusu Memory Leak nedir ve Flutter’da nasıl tespit edilir bunu anlatmaya çalışacağım.

Memory Leak, programın eriştiği ve kullandığı belleğin, bir kısmına artık ihtiyacı olmamasına rağmen hala hafızada yer tutmasına denir. Bunun neticesinde de programda mantıksal olarak hatalar meydana gelebilir veya açığın büyüklüğüne bağlı olarak programda yavaşlıklar gerçekleşir. Kodlayan kişinin framework’u tanımamasından ötürü ortaya çıkar genellikle. 🙂

Peki yazdığımız Flutter uygulamalarında bunları nasıl tespit edeceğiz? Android Studio içerisinde yer alan geliştirici araçlarından biri olan Flutter Performance aracılığıyla.

İlk olarak projemizi açtıktan sonra View -> Tool Windows -> Flutter Performance dizinini kullanarak Flutter Performance’ı aktif ediyoruz.

İkinci aşamada sağ alt köşede yer alan “Open Dev Tools” linkine tıklıyoruz ve karşımıza bir web sayfası açılmış olacak. Bu web sayfasında üst kısımdaki menüden Memory sekmesini seçtiğiniz takdirde karşınıza çıkan sayfada uygulamanızın kullandığı bellek miktarını görüntülemiş olacaksınız.

Sol tarafta bulunan Snapshot butonuna tıkladıktan sonra aşağıda gelecek olan bellekte bulunan paketlerin ve paketlerin içindeki sınıflara göz atarak Memory Leak tespiti yapabilirsiniz. Örneğin BigCard widgetları’ndan uygulamanın o aşamasında 8’den fazla olması durumunda burada bir memory leak olduğunu anlayacak ve kötü yazılmış bir kod olduğunu bulabilecektim. 🙂 Aynı zamanda state’ler arası geçişlerdeki önemli noktalarda Snapshot alıp, bir önceki Snapshot ile karşılaştırma yaparak hangi referansların gereksiz yere bellekte yer tuttuğunu inceleyebilir ve onları dispose aşamasında yok edebilirsiniz.

Siz de benzer adımları uygulayarak uygulamanızın hangi aşamada hangi widget çağrıldığında ve hangi aşamalarda memory leak yaptığını tespit edebilirsiniz.