« RSS + swap ناشناس » که نشاندهندهی فشار حافظهی یک فرآیند است، معیاری حیاتی برای حفظ پایداری بازی محسوب میشود. این معیار هم به عنوان آستانهی محدودیت حافظه برای Memory Limiter (اندروید ۱۷ و بالاتر) و هم به عنوان معیار استاندارد برای Memory Vitals در کنسول گوگل پلی عمل میکند.
اندازهگیری میزان استفاده از حافظه که دقیقاً با «RSS + swap ناشناس» مطابقت داشته باشد، چه در زمان اجرا و چه به صورت استاتیک در موتور Unreal دشوار است.
برای ردیابی میزان استفاده از حافظه، موتور Unreal معیار VmRSS + VmSwap را ارائه میدهد. اگرچه این معیار از «RSS + swap ناشناس» گستردهتر است زیرا VmRSS شامل rssFile و rssShmem میشود، اما همچنان به عنوان یک تخمین قابل اعتماد عمل میکند.
برای تجزیه و تحلیل ردپای حافظه بازی خود، این راهنما را دنبال کنید:
- پرس و جو از حافظه با استفاده از API های C++
- نظارت بر حافظه با استفاده از دستورات کنسول
- با Unreal Insights حافظه را تجسم کنید
- تأیید دقیق میزان استفاده از حافظه با استفاده از Perfetto
پرس و جو از حافظه با استفاده از API های C++
برای پرسوجو در مورد معیارهای حافظه، از APIهای C++ زیر استفاده کنید:
پرس و جوی حافظه سبک
از GetMemoryUsedFast برای یک پرسوجوی حافظه سبک استفاده کنید. در اندروید، این روش با تجزیه تنها فیلدهای حافظه لازم از /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 سفارشی را نشان میدهد.
تأیید دقیق میزان استفاده از حافظه با استفاده از Perfetto
برای تأیید مقادیر دقیق « RSS + swap ناشناس » سیستم عامل اندروید به جای تخمین، از Perfetto استفاده کنید. Perfetto معیارهای حافظه سطح سیستم را برای ارزیابی میزان دقیق مصرف بازی شما ثبت میکند.
