Mewakili tekanan memori suatu proses, 'RSS anonim + swap' adalah metrik penting untuk mempertahankan stabilitas game. Metrik ini berfungsi sebagai nilai minimum batas memori untuk Pembatas Memori (Android 17 dan yang lebih tinggi) serta tolok ukur standar untuk Vitalitas Memori di Konsol Google Play.
Sulit untuk mengukur penggunaan memori yang persis sama dengan 'RSS anonim + swap' baik saat runtime maupun secara statis dalam Unreal Engine.
Untuk melacak penggunaan memori, Unreal Engine menyediakan VmRSS + VmSwap
metrik. Meskipun lebih luas daripada 'RSS anonim + swap' karena VmRSS mencakup rssFile dan rssShmem, metrik ini tetap berfungsi sebagai perkiraan yang andal.
Ikuti panduan ini untuk menganalisis jejak memori game Anda:
- Membuat kueri memori menggunakan C++ API
- Memantau memori menggunakan perintah konsol
- Memvisualisasikan memori dengan Unreal Insights
- Memverifikasi penggunaan memori yang akurat menggunakan Perfetto
Membuat kueri memori menggunakan C++ API
Gunakan C++ API berikut untuk membuat kueri metrik memori:
Kueri memori ringan
Gunakan GetMemoryUsedFast untuk kueri memori ringan. Di Android, metode ini menampilkan perkiraan jejak dengan hanya mengurai kolom memori yang diperlukan dari /proc/self/status, bukan membaca seluruh file.
Statistik memori mendetail
Gunakan GetStats untuk membuat kueri statistik memori platform mendetail. Metode ini menyediakan statistik memori platform yang komprehensif, yang menampilkan FPlatformMemoryStats.UsedPhysical dan FPlatformMemoryStats.RssFile. Karena UsedPhysical adalah jumlah VmRSS dan VmSwap, Anda dapat lebih dekat dengan nilai tolok ukur dengan mengurangkan RssFile darinya.
#include "HAL/PlatformMemory.h"
uint64 GetEstimatedPhysicalMemory()
{
FPlatformMemoryStats Stats = FPlatformMemory::GetStats();
#if PLATFORM_ANDROID
return Stats.UsedPhysical - Stats.RssFile;
#else
return Stats.UsedPhysical;
#endif
}
Memantau memori menggunakan perintah konsol
Gunakan pendekatan ini untuk memantau tren memori saat game berjalan di perangkat. Untuk membuka konsol, ketuk layar dengan empat jari, lalu masukkan perintah berikut.
| Perintah | Deskripsi |
|---|---|
stat unit |
Menampilkan penggunaan memori fisik gabungan saat ini di baris Mem, yang diperbarui setiap frame. |
stat unitmax |
Menampilkan penggunaan memori fisik dan virtual gabungan rata-rata dan sesi puncak di baris Mem. |
stat unit
yang menampilkan baris MemMemvisualisasikan memori dengan Unreal Insights
Unreal Insights memungkinkan Anda memantau dan memvisualisasikan metrik memori, seperti statistik memori platform dan penghitung kustom, dari waktu ke waktu menggunakan grafik linimasa yang akurat.
- Hubungkan perangkat Anda ke Saluran Aktivitas Memori dengan flag yang menyertakan
default,countersuntuk melihat grafikPlatformMemory/UsedPhysical(VmRSS + VmSwap) bersama dengan linimasa frame. - Opsional: Untuk melacak metrik memori kustom secara lebih mendetail, deklarasikan dan perbarui penghitung aktivitas kustom menggunakan
TRACE_DECLARE_MEMORY_COUNTERdanTRACE_COUNTER_SET.
#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.Memverifikasi penggunaan memori yang akurat menggunakan Perfetto
Untuk memverifikasi nilai 'RSS anonim + swap' Android OS yang tepat, bukan perkiraan, gunakan Perfetto. Perfetto menangkap metrik memori tingkat sistem untuk mengevaluasi jejak game Anda yang tepat.