Bellek kullanımını artıran uygulamalar

Android platformu, boş belleğin boşa harcanmış bellek olduğu prensibiyle çalışır. Android, her zaman mevcut tüm belleği kullanmaya çalışır. Örneğin, sistem, kullanıcının hızlıca geri dönebilmesi için kapalı uygulamalar hafızada tutar. Bu nedenle, Android cihazlar genellikle çok az boş bellekle çalışır (Android bellek ayırma bölümüne bakın).

Android düşük bellek sorunu (LMK) hizmeti işlemi, çalışan bir Android sisteminin bellek durumunu izler ve sistemin kabul edilebilir seviyelerde performans göstermesini sağlamak için en az gerekli işlemleri sonlandırarak yüksek bellek baskısına tepki verir.

LMK daemon'u, hangi işlemin sonlandırılacağına karar vermek için çalışan işlemlere öncelik vermek amacıyla oom_adj_score adlı bir bellek yetersizliği puanı kullanır. Yüksek puana sahip işlemler önce kapatılır. Arka plan uygulamaları önce, sistem işlemleri ise en son kapatılır. Aşağıdaki tabloda, LMK puanlama kategorileri yüksekten düşüğe doğru listelenmiştir. İlk satırdaki en yüksek puana sahip kategorideki öğeler önce kaldırılır:

Android işlemleri en yüksek puandan en düşük puana göre sıralanır: Arka plan uygulamaları, önceki uygulama, ana ekran uygulaması, hizmetler, algılanabilir uygulamalar, ön plan uygulaması, kalıcı, sistem ve yerel.
Şekil 1. Üstte yüksek puanlar, altta düşük puanlar bulunan Android işlemleri.

Android vitals'daki LMK metriği

Android vitals, uygulamanızın LMK oranını izlemenize ve iyileştirmenize yardımcı olabilir. Android vitals yalnızca bir LMK oranını ölçer: Kullanıcı tarafından algılanan LMK oranı.

Bu metrik, günlük etkin kullanıcılarınız arasında, kullanıcı tarafından algılanan en az bir LMK yaşayanların yüzdesini yansıtır. Kullanıcı tarafından algılanan LMK, kullanıcı tarafından fark edilmiş olması muhtemel LMK'lerdir. Örneğin, uygulamanızın bir etkinlik görüntülediği veya ön plan hizmeti olarak çalıştığı anlarda gerçekleşen LMK'lar buna örnek gösterilebilir.

Bu metriği Android vitals'daki Kararlılık bölümünde bulabilirsiniz:

Şekil 2. Android vitals'ta Kullanıcı tarafından algılanan LMK oranına erişin.

ANR'ler ve kilitlenmeler gibi diğer temel yaşamsal metriklerde olduğu gibi, metrikleri filtreleyebilir, metriklerinizi benzer uygulamanızla karşılaştırabilir veya metriğin değişimini uzun bir süre boyunca (3 yıla kadar) izleyebilirsiniz. Mevcut uygulamalar için veriler 28 Ocak 2025'ten itibaren kullanılabilir.

Şekil 3. Android Vitals'taki LMK oranına genel bakış.

Bellek kullanımının profilini çıkarma araçları

Aşağıdaki araçlar, aşağıdaki yöntemlerle bellek sorunlarını bulup teşhis etmenize yardımcı olabilir:

  • Uygulamanızın zaman içinde nasıl bellek ayırdığını görün. Uygulamanızın ne kadar bellek kullandığının, ayrılan Java nesnelerinin sayısının ve çöp toplamanın ne zaman gerçekleştiğinin gerçek zamanlı grafiğini görebilirsiniz.
  • Çöp toplama etkinliklerini başlatın ve uygulamanız çalışırken Java yığınının anlık görüntüsünü alın.
  • Uygulamanızın bellek ayırmalarını kaydedin, ayrılan tüm nesneleri inceleyin ve her ayırma için yığın izlemeyi görüntüleyin.

Android Studio Memory Profiler

Android Studio, Android Profiler'ın bir bileşeni olarak Bellek Profilleyici'yi sunar. Bu araç, takılmalara, donmalara ve hatta uygulama kilitlenmelerine neden olabilecek bellek sızıntılarını ve bellek değişimlerini belirlemenize yardımcı olur. Profilleyici, uygulamanızın bellek kullanımının gerçek zamanlı grafiğini gösterir ve yığın dökümünü yakalamanıza, çöp toplamayı zorlamanıza ve bellek ayırmayı izlemenize olanak tanır.

Şekil 4. Android Studio Bellek Profilleyici'de genel JNI referanslarını görüntüleme.

Unity bellek profilleme araçları

Uygulamalarınızı oluşturmak için Unity Engine'i kullanıyorsanız Unity bellek profilleme kılavuzunu inceleyebilirsiniz. Unity, uygulamanızdaki bellek kullanımını analiz etmek için iki araç sunar.

Bunlardan ilki, uygulamanızın nerede bellek kullandığı hakkında temel bilgiler veren yerleşik bir profilleyici olan Bellek Profilleyici modülüdür.

Bellek modülü, doku belleği ve ağ belleği gibi bellek tahsislerini gösterir.
Şekil 5. Bellek modülünün seçili olduğu Unity Profiler penceresi.

İkinci araç, projenize ekleyebileceğiniz bir Unity paketi olan Bellek Profilleyici paketidir. Paket, Unity Editor'a ek bir Bellek Profilleyici penceresi ekler. Bellek Profilleyici, uygulamanızdaki bellek kullanımını daha ayrıntılı bir şekilde analiz etmenize olanak tanır. Bellek sızıntısı bulmak için anlık görüntüleri saklayıp karşılaştırabilir veya bellek parçalanması sorunlarını bulmak için bellek düzenini görebilirsiniz.

Şekil 6. Bellek Profiler penceresini kullanarak bir bellek anlık görüntüsünü analiz etme.

Unreal Memory Insights

Unreal Engine tarafından oluşturulan uygulamalar, bellek bloklarıyla ilişkili düşük seviye bellek (LLM) etiketleri ve çağrı yığınları da dahil olmak üzere bellek ayırma ve bellek ayırma hakkında ayrıntılı bilgi görmek için Unreal Memory Insights'ı kullanabilir.

Bellek Analizleri sorgu sistemi, herhangi bir zamanda etkin ayırma işlemlerini bulabilir, bellek kullanımındaki değişiklikleri belirleyebilir, bellek sızıntılarını tespit edebilir ve kısa süreli ayırma işlemlerini uzun süreli ayırma işlemlerinden ayırt edebilir.

UE 5.4'ten itibaren Bellek Analizleri, Android projeleri için çağrı yığınlarıyla bellek izlemeyi destekler.

Ana bellek grafiğini, canlı tahsis sayısını ve tahsis/serbest etkinlik sayısını gösteren Bellek Analizleri izleyicisi.
Şekil 6. Unreal'ın Bellek Analizleri izleyicisi.

Ek kaynaklar