يمثّل 'anonymous RSS + swap' ضغط الذاكرة في عملية معيّنة، وهو مقياس مهم للحفاظ على ثبات اللعبة. ويُستخدَم كعتبة للحدّ الأقصى للذاكرة في أداة تحديد الذاكرة (Android 17 والإصدارات الأحدث) وكقيمة مرجعية عادية لمقياس "مؤشرات الذاكرة الحيوية" في Google Play Console.
يصعب قياس استخدام الذاكرة الذي يطابق تمامًا "**anonymous RSS + swap** " إما في وقت التشغيل أو بشكل ثابت في Unreal Engine.
لتتبُّع استخدام الذاكرة، يوفّر Unreal Engine المقياس VmRSS + VmSwap. على الرغم من أنّه أوسع من "**anonymous RSS + swap** " لأنّ
VmRSS يتضمّن rssFile وrssShmem، فإنّه يظلّ تقديرًا موثوقًا به.
اتّبِع هذه الإرشادات لتحليل استهلاك الذاكرة في لعبتك:
- الاستعلام عن الذاكرة باستخدام واجهات برمجة تطبيقات C++
- مراقبة الذاكرة باستخدام أوامر وحدة التحكّم
- تمثيل الذاكرة بصريًا باستخدام Unreal Insights
- التحقّق من استخدام الذاكرة بدقة باستخدام Perfetto
الاستعلام عن الذاكرة باستخدام واجهات برمجة تطبيقات C++
استخدِم واجهات برمجة تطبيقات C++ التالية للاستعلام عن مقاييس الذاكرة:
الاستعلام عن الذاكرة بشكل بسيط
استخدِم 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التحقّق من استخدام الذاكرة بدقة باستخدام Perfetto
للتحقّق من القيم الدقيقة لنظام التشغيل Android 'anonymous RSS + swap' بدلاً من التقدير، استخدِم Perfetto. يلتقط Perfetto مقاييس الذاكرة على مستوى النظام لتقييم مساحة الذاكرة الدقيقة التي تشغلها لعبتك.