프로세스의 메모리 압력을 나타내는 '익명 RSS + 스왑' 은 게임 안정성을 유지하는 데 중요한 측정항목입니다. 이 측정항목은 **메모리 제한기** (Android 17 이상)의 메모리 한도 임계값과 Google Play Console의 메모리 Vitals의 표준 벤치마크 역할을 합니다.
런타임 시 또는 Unreal Engine 내에서 정적으로 '익명 RSS + 스왑'과 정확히 일치하는 메모리 사용량을 측정하기는 어렵습니다.
메모리 사용량을 추적하기 위해 Unreal Engine은 VmRSS + VmSwap
측정항목을 제공합니다. VmRSS에 rssFile 및 rssShmem이 포함되어 있으므로 '익명 RSS + 스왑'보다 광범위하지만 여전히 신뢰할 수 있는 추정치 역할을 합니다.
이 안내에 따라 게임의 메모리 사용량을 분석하세요.
C++ API를 사용하여 메모리 쿼리
다음 C++ API를 사용하여 메모리 측정항목을 쿼리합니다.
경량 메모리 쿼리
경량 메모리 쿼리에는 GetMemoryUsedFast를 사용합니다. Android에서 이 메서드는 전체 파일을 읽는 대신 /proc/self/status에서 필요한 메모리 필드만 파싱하여 추정된 공간을 반환합니다.
세부 메모리 통계
GetStats를 사용하여 세부 플랫폼 메모리 통계를 쿼리합니다. 이 메서드는 포괄적인 플랫폼 메모리 통계를 제공하며 FPlatformMemoryStats.UsedPhysical과 FPlatformMemoryStats.RssFile을 모두 반환합니다. UsedPhysical은 VmRSS와 VmSwap의 합이므로 여기에서 RssFile을 빼면 벤치마크 값에 더 가까워질 수 있습니다.
#include "HAL/PlatformMemory.h"
uint64 GetEstimatedPhysicalMemory()
{
FPlatformMemoryStats Stats = FPlatformMemory::GetStats();
#if PLATFORM_ANDROID
return Stats.UsedPhysical - Stats.RssFile;
#else
return Stats.UsedPhysical;
#endif
}
콘솔 명령어를 사용하여 메모리 모니터링
이 접근 방식을 사용하여 게임이 기기에서 실행되는 동안 메모리 트렌드를 모니터링합니다. 콘솔을 열려면 화면을 네 손가락으로 탭한 다음 다음 명령어를 입력합니다.
| 명령어 | 설명 |
|---|---|
stat unit |
모든 프레임에서 업데이트되는 Mem 행에 현재 집계된 실제 메모리 사용량을 표시합니다. |
stat unitmax |
Mem 행에 평균 및 세션 최고 집계 실제 및 가상 메모리 사용량을 표시합니다. |
stat unit 오버레이
에서 Mem 행을 표시합니다.Unreal Insights로 메모리 시각화
Unreal Insights를 사용하면 프레임 정확한 타임라인 그래프를 사용하여 플랫폼 메모리 통계 및 맞춤 카운터와 같은 메모리 측정항목을 시간 경과에 따라 모니터링하고 시각화할 수 있습니다.
default,counters를 포함하는 플래그를 사용하여 기기를 메모리 트레이스 채널에 연결하여 프레임 타임라인과 함께PlatformMemory/UsedPhysical(VmRSS + VmSwap) 그래프를 확인합니다.- 선택사항: 맞춤 메모리 측정항목을 더 자세히 추적하려면
TRACE_DECLARE_MEMORY_COUNTER및TRACE_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 카운터를 보여주는 Unreal Insights 타임라인Perfetto를 사용하여 정확한 메모리 사용량 확인
추정치가 아닌 정확한 Android OS '익명 RSS + 스왑' 값을 확인하려면 Perfetto를 사용하세요. Perfetto는 시스템 수준 메모리 측정항목을 캡처하여 게임의 정확한 공간을 평가합니다.