Bellek Yönetimi B-09
Java Bellek Sızıntıları (Memory Leaks)
Yazılımcı olarak hepimiz, mevcut tüm bellek dolana kadar fazla nesnelerin biriktiği türden sürekli artan bellek sızıntısına aşinayız. Aslında bu tür bir sorunu, basit trend veya histogram dökümleri ile takip etmek kolaydır. Şekil 2.24, Dynatrace memory trend dökümünde görebilirsiniz fakat benzer sonuçları manuel olarak jmap -histo kullanarak ve ardından sonuçları karşılaştırarak da elde edebilirsiniz. Sonuçlarınızda sürekli artan değerler varsa bir bellek sızıntısı var demektir.
Şekil 2.24: Trend dökümü, zamanla hangi nesnelerin sayısının arttığını gösterir.
Öte yandan, büyümeyen veya yavaş büyüyen bir bellek sızıntısı da söz konusu olabilir. Bunun sebebi önemsiz gibi görünebilecek kadar küçük görünenlerin kolayca gözden kaçmasıdır. Ancak, böyle bir sızıntı tek bir büyük nesne yapısı tarafından tetiklendiğinde, eksik bellek, uygulamanın kararlılığı için önemli bir tehdit oluşturabilir. Modern bir yığın analiz aracı kullanarak, şekil 2.25’te gösterildiği gibi bu tür sızıntıları oldukça hızlı bir şekilde takip edebilirsiniz.