التطبيقات التي تستهلك ذاكرة الجهاز

يعمل نظام التشغيل Android على فرضية أنّ الذاكرة الفارغة هي ذاكرة مهدورة. يحاول نظام Android استخدام كل الذاكرة المتاحة في جميع الأوقات. على سبيل المثال، يحفظ النظام التطبيقات في الذاكرة بعد إغلاقها حتى يتمكّن المستخدم من العودة إليها بسرعة. لهذا السبب، تعمل أجهزة Android غالبًا باستخدام ذاكرة مجانية قليلة جدًا (اطّلِع على تخصيص ذاكرة Android هنا).

تعمل عملية الخادم غير القابل للإنهاء لميزة "إغلاق التطبيقات بسبب نقص الذاكرة" (LMK) في نظام Android على رصد حالة الذاكرة في نظام Android قيد التشغيل والاستجابة لحالات ازدحام الذاكرة عن طريق إغلاق العمليات الأقل أهمية للحفاظ على أداء النظام على مستويات مقبولة.

لتحديد العملية التي سيتم إغلاقها، يستخدم الخادم الخفي LMK نتيجة تعذُّر توفُّر ذاكرة تُعرف باسم oom_adj_score من أجل منح الأولوية للعمليات الجارية. يتم إيقاف العمليات التي تحقّق نتيجة عالية أولاً. يتم أولاً إنهاء التطبيقات التي تعمل في الخلفية، ثم عمليات النظام. يسرد الجدول التالي فئات التقييم في LMK من الأعلى إلى الأدنى. يتم أولاً إيقاف العناصر في الفئة التي حققت أعلى نتيجة في الصف الأول:

عمليات Android مرتّبة من الأعلى إلى الأدنى: التطبيقات التي تعمل في الخلفية والتطبيق السابق والتطبيق الرئيسي
             والخدمات والتطبيقات التي يمكن ملاحظتها والتطبيقات التي تعمل في المقدّمة والتطبيقات الثابتة وتطبيقات النظام والتطبيقات الأصلية
الشكل 1. عمليات Android، مع الدرجات العالية في الأعلى والدرجات المنخفضة في الأسفل

مقياس LMK في "مؤشرات Android الحيوية"

يمكن أن تساعدك "مؤشرات Android الحيوية" في مراقبة معدّل LMK لتطبيقك وتحسينه. تقيس метриكس Android vitals نسبة واحدة فقط من أعطال LMK، وهي نسبة أعطال LMK التي لاحظها المستخدمون.

يعرض المقياس النسبة المئوية للمستخدمين النشطين يوميًا الذين واجهوا عطلًا واحدًا على الأقل من أعطال "إغلاق التطبيقات بسبب نقص الذاكرة (LMK)" الملحوظة. ويشير هذا العُطل إلى عُطل LMK ظهر للمستخدم على الأرجح. على سبيل المثال، أعطال LMK التي تحدث أثناء عرض تطبيقك لنشاط معيَّن أو تشغيله كخدمة تعمل في المقدّمة.

يمكنك العثور على المقياس ضمن قسم الثبات في "مؤشرات Android الحيوية":

الشكل 2. يمكنك الوصول إلى نسبة أعطال LMK التي لاحظها المستخدمون في "مؤشرات Android الحيوية".

كما هو الحال مع المقاييس الأساسية الأخرى لأداء التطبيق، مثل أخطاء ANR والأعطال، يمكنك فلترة المقاييس أو مقارنة مقاييسك بتطبيق مشابه أو تتبُّع تغيُّر المقياس على مدار فترة زمنية طويلة (تصل إلى 3 سنوات). تتوفّر البيانات للتطبيقات الحالية اعتبارًا من 28 كانون الثاني (يناير) 2025.

الشكل 3. نظرة عامة على نسبة أعطال LMK في "مؤشرات Android الحيوية"

أدوات تحليل استخدام الذاكرة

يمكن أن تساعدك الأدوات التالية في العثور على مشاكل الذاكرة وتشخيصها بالطرق التالية:

  • اطّلِع على كيفية تخصيص تطبيقك للذاكرة بمرور الوقت. يمكنك العثور على رسم بياني في الوقت الفعلي لحجم الذاكرة التي يستخدمها تطبيقك وعدد عناصر Java المخصّصة ووقت جمع المهملات.
  • ابدأ أحداث جمع المهملات وخذ لقطة شاشة لمكبّر Java أثناء تشغيل تطبيقك.
  • يمكنك تسجيل عمليات تخصيص الذاكرة في تطبيقك، وفحص جميع العناصر المخصّصة، وعرض تتبُّع تسلسل استدعاء الدوال البرمجية لكل عملية تخصيص.

أداة تحليل الذاكرة في Android Studio

يقدّم "استوديو Android" أداة محلل الذاكرة كأحد مكوّنات أداة محلل أداء Android التي تساعدك في تحديد تسرب الذاكرة وتغييرها بشكل متكرّر، ما قد يؤدي إلى حدوث تقطُّع في الأداء وتوقُّف التطبيقات عن العمل وحتى تعطُّلها. يعرض أداة تحليل الأداء رسمًا بيانيًا في الوقت الفعلي لاستخدام تطبيقك للذاكرة، ويسمح لك بالتقاط بيانات عن ذاكرة الشريحة وفرض جمع المهملات وتتبُّع منح الذاكرة.

الشكل 4. عرض إشارات JNI الشاملة في أداة تحليل الذاكرة في "استوديو Android"

أدوات تحليل استخدام الذاكرة في Unity

إذا كنت تستخدِم Unity Engine لإنشاء تطبيقاتك، يمكنك اتّباع إرشادات تحليل الذاكرة في Unity. تقدّم Unity أداتين لتحليل استخدام الذاكرة في تطبيقك.

الأولى هي وحدة تحليل الذاكرة، وهي أداة تحليل مدمجة تمنحك معلومات أساسية عن الأماكن التي يستخدم فيها تطبيقك الذاكرة.

تعرِض وحدة الذاكرة عمليات تخصيص الذاكرة، مثل ذاكرة الزخرفة وذاكرة الشبكة.
الشكل 5. نافذة Unity Profiler مع اختيار وحدة الذاكرة

الأداة الثانية هي حزمة "أداة تحليل الذاكرة"، وهي حزمة Unity يمكنك إضافتها إلى مشروعك. تضيف الحزمة نافذة "أداة تحليل الذاكرة" إضافية إلى "محرر Unity". يتيح لك "أداة تحليل استخدام الذاكرة" تحليل استخدام الذاكرة في تطبيقك بمزيد من التفصيل. يمكنك تخزين ومقارنة اللقطات للعثور على عمليات تسرُّب الذاكرة أو الاطّلاع على تخطيط الذاكرة للعثور على مشاكل تجزئة الذاكرة.

الشكل 6. تحليل لقطة ذاكرة باستخدام نافذة "أداة تحليل الذاكرة"

إحصاءات الذاكرة في Unreal

يمكن للتطبيقات التي تم إنشاؤها باستخدام Unreal Engine استخدام إحصاءات الذاكرة في Unreal لمعرفة معلومات تفصيلية عن تخصيص الذاكرة وإلغاء تخصيصها، بما في ذلك علامات الذاكرة ذات المستوى المنخفض (LLM) وسلسلة استدعاء الدوال المرتبطة بكتل الذاكرة.

يمكن لنظام طلبات البحث في "إحصاءات الذاكرة" العثور على عمليات التخصيص النشطة في أي وقت، وتحديد التغييرات في استخدام الذاكرة، وتحديد مكان تسرُّب الذاكرة، والتمييز بين عمليات التخصيص على المدى القصير والمدى الطويل.

اعتبارًا من الإصدار 5.4 من Unreal Engine، تتيح ميزة "إحصاءات الذاكرة" تتبُّع الذاكرة باستخدام تسلسلات استدعاء الدوال لمشاريع Android.

أداة تتبُّع "إحصاءات الذاكرة" تعرِض الرسم البياني للذاكرة الرئيسية وعدد عمليات التخصيص المباشر وعدد أحداث التخصيص/المساحة المتوفّرة.
الشكل 6. أداة تتبُّع Memory Insights من Unreal

مصادر إضافية