Android platformu, boş belleğin boşa harcanan 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ı olan uygulamaları bellekte 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 hayati 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.

Düşük bellek analizleri
Android, oyununuzun bellek gereksinimlerini azaltmanıza ve önceki oyun çalıştırmalarının neden sonlandırıldığını belirlemenize olanak tanıyan geri çağırma işlevleri ve API'ler sağlar.
Geri aramalar
Desteği sonlandırılan trim geri çağırma işlevlerine kaydolma Android, sistem bellek sınırlarına ulaştığında yerel bellek baskısı etkinliklerini algılamak için API'ye sahip değildir.
Trim geri çağırma işlevi, bellek yetersizliği nedeniyle uygulamanın kapatılmasını önlemede yardımcı olmadığından Android, TRIM_MEMORY_UI_HIDDEN
ve TRIM_MEMORY_BACKGROUND
dışındaki tüm geri çağırma işlevlerinin desteğini sonlandırdı.
Oyunun sonlandırılması
Android, uygulamaların ve oyunların hızlı yüklenmesini sağlamak (kullanıcı deneyimini iyileştirmek) için mevcut tüm belleği kullanmaya çalışır. Ancak bellek sınırlı hale geldiğinde sistem, normal cihaz çalışması için bellek boşaltmak üzere en fazla bellek kullanan uygulamaları ve oyunları kapatır.
Oyun belleği kullanımını iyileştirmenize yardımcı olacak bilgiler, analizler ve en iyi uygulamalar şunlardır:
ApplicationExitInfo
API'sini kullanın: Bu API, önceki oyun çalıştırmasının Android sistemi tarafından neden sonlandırıldığını döndürür. Önceki bir işlem çalıştırma sonlandırmasının nedeni olarak düşük bellek olup olmadığını kontrol etmek içinApplicationExitInfo
değerini kullanın. Oyunun, düşük bellek nedeniyle kapatılıp kapatılmadığını kontrol edin. Böylece oyun, söz konusu cihazda daha az bellek kullanacak şekilde optimize edilebilir.- Toplam fiziksel RAM'e bakın:
Ön plandayken oyunların kapatılmasını önlemek ve cihazın yetenekleriyle eşleştirmek için oyun bellek kullanımını buna göre ayarlamak üzere cihaz başına toplam fiziksel RAM'e bakın. Amacınız, uygulamaların arka plana taşındıktan kısa bir süre sonra kapatılmasını önlemekse (oyuncunun çoklu görev yapmasını sağlamak için) oyun bellek kullanımınızı azaltmak amacıyla trim geri çağırma işlevlerini (özellikle
TRIM_MEMORY_UI_HIDDEN
) kullanın.