iOS - Bellek Yönetimi
İOS'ta bellek yönetimi başlangıçta nesneleri tutmamız ve serbest bırakmamız gereken ARC (Otomatik Referans Sayma) değildi. Artık ARC'yi destekliyor ve nesneleri saklamamız ve bırakmamız gerekmiyor. Xcode, derleme zamanında işi otomatik olarak halleder.
Bellek Yönetimi Sorunları
Apple belgelerine göre, bellek yönetimindeki iki ana sorun şunlardır:
Halen kullanımda olan verileri serbest bırakmak veya üzerine yazmak. Bellek bozulmasına neden olur ve genellikle uygulamanızın çökmesine veya daha kötüsü kullanıcı verilerinin bozulmasına neden olur.
Artık kullanılmayan verilerin serbest bırakılmaması bellek sızıntılarına neden olur. Ayrılan bellek, bir daha kullanılmayacak olmasına rağmen serbest bırakılmadığında, bellek sızıntısı olarak bilinir. Sızıntılar, uygulamanızın giderek artan miktarda bellek kullanmasına neden olur ve bu da düşük sistem performansına veya (iOS'ta) uygulamanızın sonlandırılmasına neden olabilir.
Bellek Yönetimi Kuralları
Yarattığımız nesnelerin sahibiyiz ve artık ihtiyaç kalmadığında onları serbest bırakmalıyız.
Kendi oluşturmadığınız bir nesnenin sahipliğini kazanmak için Saklama'yı kullanın. Bu nesneleri de ihtiyaç duyulmadığında bırakmanız gerekir.
Sahip olmadığınız nesneleri serbest bırakmayın.
ARC'de Belleği Kullanma
ARC'de serbest bırakmanız ve saklamanız gerekmez. Dolayısıyla, görünüm denetleyicisinin tüm nesneleri, görünüm denetleyicisi kaldırıldığında serbest bırakılacaktır. Benzer şekilde, herhangi bir nesnenin alt nesneleri, serbest bırakıldıklarında serbest bırakılacaktır. Diğer sınıfların bir sınıfın nesnesine güçlü bir referansı varsa, o zaman tüm sınıfın serbest bırakılmayacağını unutmayın. Bu nedenle, delegeler için zayıf özelliklerin kullanılması önerilir.
Bellek Yönetimi Araçları
Xcode araç gereçlerinin yardımıyla bellek kullanımını analiz edebiliriz. Etkinlik Monitörü, Tahsisler, Sızıntılar, Zombiler ve benzeri araçlar içerir.
Bellek Tahsislerini Analiz Etme Adımları
Step 1 - Mevcut bir uygulamayı açın.
Step 2 - Aşağıda gösterildiği gibi Ürünü ve ardından Profili seçin.
Step 3 - Aşağıda gösterilen sonraki ekranda Tahsisler'i seçin ve Profil'i seçin.
Step 4 - Aşağıda gösterildiği gibi farklı nesneler için bellek tahsisini göreceğiz.
Step 5 - Görüntü denetleyicileri arasında geçiş yapabilir ve belleğin düzgün şekilde serbest bırakılıp bırakılmadığını kontrol edebilirsiniz.
Step 6 - Benzer şekilde, Allocations yerine, uygulama için ayrılan toplam belleği görmek için Activity Monitor'ü kullanabiliriz.
Step 7 - Bu araçlar bellek tüketimimize erişmemize ve olası sızıntıların meydana geldiği yerleri bulmamıza yardımcı olur.