Bir işlemin bellek baskısını temsil eden "anonim RSS + takas", oyun kararlılığını korumak için kritik bir metriktir. Bu değer hem Bellek Sınırlayıcı (Android 17 ve sonraki sürümler) için bellek sınırı eşiği hem de Google Play Console'daki bellek vitals'ı için standart karşılaştırma ölçütü olarak kullanılır.
Bellek kullanımını, çalışma zamanında veya Unreal Engine'de statik olarak "anonim RSS + takas" ile tam olarak eşleşecek şekilde ölçmek zordur.
Unreal Engine, bellek kullanımını izlemek için VmRSS + VmSwap metriğini sağlar. VmRSS, rssFile ve rssShmem'yi içerdiğinden "anonim RSS + takas"tan daha kapsamlı olsa da güvenilir bir tahmin olarak kullanılabilir.
Oyununuzun bellekte kapladığı yeri analiz etmek için aşağıdaki yönergeleri uygulayın:
- C++ API'lerini kullanarak belleği sorgulama
- Konsol komutlarını kullanarak belleği izleme
- Unreal Insights ile belleği görselleştirme
- Perfetto'yu kullanarak tam bellek kullanımını doğrulama
C++ API'lerini kullanarak belleği sorgulama
Bellek metriklerini sorgulamak için aşağıdaki C++ API'lerini kullanın:
Hafif bellek sorgusu
Hafif bir bellek sorgusu için GetMemoryUsedFast uygulamasını kullanın. Android'de bu yöntem, dosyanın tamamını okumak yerine yalnızca /proc/self/status içindeki gerekli bellek alanlarını ayrıştırarak tahmini ayak izini döndürür.
Ayrıntılı bellek istatistikleri
Ayrıntılı platform bellek istatistiklerini sorgulamak için GetStats kullanın. Bu yöntem, hem FPlatformMemoryStats.UsedPhysical hem de FPlatformMemoryStats.RssFile değerlerini döndürerek kapsamlı platform bellek istatistikleri sağlar. UsedPhysical, VmRSS ve VmSwap değerlerinin toplamı olduğundan RssFile değerini çıkararak karşılaştırma ölçütü değerine daha yakın bir sonuç elde edebilirsiniz.
#include "HAL/PlatformMemory.h"
uint64 GetEstimatedPhysicalMemory()
{
FPlatformMemoryStats Stats = FPlatformMemory::GetStats();
#if PLATFORM_ANDROID
return Stats.UsedPhysical - Stats.RssFile;
#else
return Stats.UsedPhysical;
#endif
}
Konsol komutlarını kullanarak belleği izleme
Oyun cihazda çalışırken bellek trendlerini izlemek için bu yaklaşımı kullanın. Konsolu açmak için dört parmağınızla ekrana dokunun ve aşağıdaki komutları girin.
| Komut | Açıklama |
|---|---|
stat unit |
Mem satırında mevcut toplam fiziksel bellek kullanımını gösterir. Bu değer her karede güncellenir. |
stat unitmax |
Mem satırında, ortalama ve oturumun en yüksek noktası olan toplam fiziksel ve sanal bellek kullanımı gösterilir. |
stat unit yer paylaşımı
Mem satırını gösterir.Unreal Insights ile belleği görselleştirme
Unreal Insights, kareye duyarlı zaman çizelgesi grafikleri kullanarak platform bellek istatistikleri ve özel sayaçlar gibi bellek metriklerini zaman içinde izlemenize ve görselleştirmenize olanak tanır.
- Cihazınızı,
default,countersiçeren işaretlere sahip Bellek İzleme Kanalları'na bağlayarakPlatformMemory/UsedPhysical(VmRSS + VmSwap) grafiğini kare zaman çizelgesiyle birlikte görüntüleyin. - İsteğe bağlı: Özel bellek metriklerini daha ayrıntılı olarak izlemek için
TRACE_DECLARE_MEMORY_COUNTERveTRACE_COUNTER_SETkullanarak özel izleme sayacı tanımlayın ve güncelleyin.
#include "ProfilingDebugging/CountersTrace.h"
TRACE_DECLARE_MEMORY_COUNTER(Trace_EstimatedPhysicalMemory, TEXT("Memory/EstimatedPhysicalMemory"));
void UpdateMemoryTraceCounter()
{
// Note: Ensure GetEstimatedPhysicalMemory() is defined as shown
// in the Query memory at runtime using C++ APIs section.
TRACE_COUNTER_SET(Trace_EstimatedPhysicalMemory, GetEstimatedPhysicalMemory());
}
Memory/EstimatedPhysicalMemory sayacıPerfetto'yu kullanarak tam bellek kullanımını doğrulama
Tahmin yerine tam Android OS "anonymous RSS + swap" değerlerini doğrulamak için Perfetto'yu kullanın. Perfetto, oyununuzun tam yer kaplama alanını değerlendirmek için sistem düzeyinde bellek metriklerini yakalar.