-
Title:
04-04 Memory_Leaks
-
Description:
-
Objeler oluşturulurken veya
yok edilirken, Android Java Dili ile
-
ilgili en iyi şeylerden biri de
kullanırken çok dikkat etmeniz
-
gerekmeyen bellek ortamı
tarafından yönetilmesidir.
-
Bir yandan bu iyi gözükürken,
burada yüzey altında
-
gizlenmiş bazı gizli
performans problemleri vardır.
-
Unutmayın, Android çalışırken
oluşan bellek yığınları
-
tahsis edilme türüne ve sistemin
sonraki GC olaylarını nasıl daha iyi
-
organize edeceğine bağlı olarak
alanlarda parçalara ayrılır.
-
Ve her alan kendine ayrılmış
bellek boyutuna sahiptir.
-
Objenin birleştirilmiş boyutu
alandaki, kendi sınırına
-
ulaşmaya başladığında, çöp toplama
olayı yer kazanmak için başlatılır
-
ve gereksiz objeler kaldırılır.
-
Bu GC olayları, genelde performans
açısından farkedilen bir problem değildir.
-
Fakat bunların çoğu defalarca
tekrar eder ve frame zamanını
-
diliminizi hızlıca tüketebilir.
-
Daha fazla GC yapmak için
zaman harcarsınız
-
render veya ses yayını gibi şeyleri
yapmak için daha az zamanınız olur.
-
Geliştiricilerin genel olarak
maruz kaldığı ve birçok GC'nin
-
oluşmasına neden olan şey
bellek sızıntısı olarak bilinir.
-
Bellek sızıntısı, uygulamanın artık
kullanmadığı nesnelerdir ancak
-
çöp toplayıcısı bunların
kullanılmadığını fark edemez.
-
Sonuç olarak yığında hâlâ bekliyorlar
ve diğer objeler için serbest
-
bırakılması gereken önemli
bir alanı kaplıyorlar.
-
Bellek sızıntısı devam ettikçe
-
yığın üretimiyle uygun alanlar
gittikçe küçülmeye devam eder.
-
Öyle ki bu, normal program yürütmesine
daha fazla alan açmak için
-
daha fazla GC'nin daha sık
yürütüleceği anlamına gelir.
-
Sızıntıları bulmak ve
düzeltmek alengirli bir iştir.
-
Bazı sızıntıları oluşturması kolaydır,
-
programın kullanmadığı objelere
döngüsel gönderme yapmak gibi.
-
Diğerleri o kadar kolay değildir.
-
Örneğin, yüklenmeleri sırasında
sınıf yükleyici nesneleri tutmak gibi.
-
Her iki durumda da, akıcı çalışan
hızlı bir uygulama, mevcut olan
-
bellek sızıntılarına karşı
uyanık ve duyarlı olmalıdır.
-
Yani, kodunuz bir çok farklı
aygıt üzerinde
-
çalışacak ve
-
hepsi aynı bellek alanına ve
boyutuna sahip olmayacaktır.
-
Neyse ki, Android SDK içerisinde
sızıntıların nerede olabileceğini
-
görmemize yardımcı olan
basit bir araç var.
-
Haydi buna bir bakalım.