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 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:

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.

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.

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.

İ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.

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.
