Bellek kullanımı (anonim RSS + takas), Android vitals'daki bir metriktir ve uygulamanızın bellek kullanımını yansıtır.
Anonim bellek, depolama alanındaki bir dosya tarafından desteklenmeyen bellektir. Örneğin, yığın ayırmaları ve mmap ile ayrılan bellek. Kalıcı küme boyutu (RSS), bir işlem tarafından kullanılan ve fiziksel RAM'de tutulan toplam bellek sayfası sayısıdır (hem paylaşılan hem de paylaşılmayan). Anonim bellek için sistem, bellek baskı altındayken sayfaları takas alanına (veya Android'de zRAM) yazabilir.
Toplam bellek kullanımı (anonim RSS + takas), uygulamanızın depolama alanında bir dosya tarafından desteklenmeyen toplam bellek sayfası sayısının bir ölçüsüdür. Sistem tarafından takasta da saklanan tüm bellekleri içerir. Anonim RSS + takas izleme, uygulamanızın gerçek ve çıkarılamayan bellekte kaplanan yerini görmenizi sağlar.
Yüksek bellek kullanımını belirleme
Android vitals
Android vitals, uygulamanızın bellek kullanımını aşağıdaki işlem durumlarına göre ayrıntılı olarak paylaşır:
- Ön plan: Uygulamanın işlemi görünür durumdadır. Buradaki yüksek P99 değeri genellikle kullanıcı tarafından algılanan performansı (jank veya OOM kilitlenmeleri) etkiler ve artık gerekli olmayan kullanıcı arayüzü bileşenlerini veya etkinliklerini tutmaktan büyük ölçüde etkilenir.
- Kullanıcı tarafından algılanan hizmetler: Uygulamanın işlemi, algılanabilir durumda çalışıyor. Bu kapsamda ön plan hizmetleri, hızlandırılmış işler ve kullanıcı tarafından başlatılan veri aktarımı işleri yer alır. Ayrıca, sisteme bağlı hizmetler veya diğer uygulamalara bağlı hizmetler de bu kapsamda olabilir. Bu hizmetler uzun süren görevler için tasarlandığından, bellek sızıntıları nedeniyle belleği tutmak veya kaynakları serbest bırakmamak zaman içinde P99 kuyruğunu şişirebilir.
- Arka plan: Uygulama, arka plan hizmeti çalıştırıyor veya kısa süre önce arka plana alındı ancak henüz önbelleğe alınmadı. Arka plan işleme sızıntıları ve yayınlanmamış kaynaklar bu noktada birleşebilir. Bu işlem durumu, ön plandaki veya algılanabilir işlemlerden daha az önemli olduğundan bu durumda büyük miktarda bellek tutmaktan kaçınmaya çalışın.
- Önbelleğe alınmış: Uygulama, önbelleğe alınmış durumdadır. Bu durum, LMK'ler gibi sistem belleği baskısına karşı oldukça hassastır. İşletim sistemi bu işlem durumunu istediği zaman kaldırabileceğinden bu durum yalnızca hata ayıklama amacıyla sağlanır.
Bu işlem durumlarının onTrimMemory geri çağırmalarıyla nasıl ilişkili olduğunu anlamak için etkinliklere yanıt olarak belleği serbest bırakma ile ilgili kılavuza bakın.
Android vitals, uygulamanızın bellek kullanımını RAM paketlerine göre de ayırır. Bellek kullanımı metriği, günlük yüzde birlik dilim değerlerinin zaman çizelgesi olarak gösterilir. Ayrıca, 50. ve 90. yüzde birlik dilimlerin en son günlük değeri de gösterilir.
Kuyruk çarpıklığını kullanarak bellek sızıntılarını belirleme
Bellek sızıntılarını belirlemek için Android vitals'da tipik (P50) ve son kullanıcılarınız (P90) arasındaki farklılığa bakın. Genel varlık şişmesi, tüm yüzdelik dilimlerde belleği eşit şekilde şişirirken bellek sızıntıları zamanla artarak son uçtaki verileri büyük ölçüde çarpıtır.
P90 ve P99 metriklerinizi, işlem adına göre P50 temel değerinizle karşılaştırmanız gerekir. P90 ile P50 oranınız 3, 5 katı aşarsa uzun oturumlar sırasında bellek sızıntısı yaşanma olasılığı yüksektir. Belirli kullanım alanlarında, yüksek bir oran her zaman sızıntı olduğunu göstermez. Ancak yüksek bellek kullanımının beklenen bir davranış olup olmadığını belirlemek için belirli iş akışını değerlendirmeniz gerekir.