أخبار المنتجات

إعداد تطبيقك للاستفادة من حدود الذاكرة الأوسع

مدّة القراءة: دقيقتان
عرض الملف الشخصي لـ "بلير هارمون"
Blair Harmon مدير إدارة المنتجات، منصة Android

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

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

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

فهم حدود الذاكرة 

عندما يتجاوز تطبيقك الحدّ الأقصى لاستخدام الذاكرة، يتّخذ نظام التشغيل Android إجراءات تدريجية لحماية استجابة الجهاز:

  1. التبديل في zRAM: إذا وصل تطبيقك إلى الحدّ المخصّص له، سيفرض النظام نقل صفحات تطبيقك إلى zRAM (ذاكرة الوصول العشوائي المضغوطة).  مع أنّ zRAM يمنع الإخلاء الفوري، يؤدي ضغط الصفحات وفك ضغطها إلى زيادة الحمل على وحدة المعالجة المركزية، ما قد يؤدي إلى حدوث تشوّش ملحوظ في واجهة المستخدم وبطء في التجربة.
  2. إنهاء العملية: إذا استمر تطبيقك في زيادة استخدام الذاكرة إلى ما بعد حد zRAM، سينهيه النظام.  لتحديد ما إذا كانت قيود طول مدة الجلسة قد أثّرت في جلسة تطبيقك في الحقل، يمكنك طلب getDescription() ضمن ApplicationExitInfo.  إذا فرض النظام حدًا، سيتم تسجيل سبب الخروج على أنّه REASON_OTHER وسيتضمّن سلسلة الوصف "MemoryLimiter:AnonSwap".  يمكنك أيضًا الاستفادة من إنشاء الملفات الشخصية المستند إلى المشغّلات باستخدام TRIGGER_TYPE_ANOMALY لتسجيل نُسخ الذاكرة تلقائيًا عند بلوغ الحد الأقصى للذاكرة.  

لمزيد من المعلومات عن الحدود القصوى للذاكرة لكل تطبيق وإجراءات النظام، يمكنك الاطّلاع على مستندات "الحدود القصوى لذاكرة التطبيقات" في Android 17. لاختبار تطبيقك على إعدادات مختلفة للأجهزة، استخدِم أوامر adb الخاصة بأداة تحديد سعة الذاكرة

مراقبة مشاكل الذاكرة وتشخيصها

لا يمكنك تحسين ما لا يمكنك قياسه. يتطلّب تحديد تسريبات الذاكرة وعمليات تخصيص الذاكرة المجمّعة المفرطة والأعطال الناتجة عن نفاد الذاكرة في جميع أنحاء نظام Android الأساسي الاستفادة من أدوات المراقبة التكميلية:

  • مراقبة حالة التطبيق على مستوى عالٍ باستخدام "مؤشرات Android الحيوية": للحصول على إحصاءات شاملة على مستوى المستخدمين بدون تكاليف إضافية، توفّر "مؤشرات Android الحيوية" في Google Play Console مقاييس أساسية، مثل استخدام الذاكرة (ذاكرة RSS المجهولة + مساحة الإبدال) واستخدام ذاكرة الصور النقطية. يمنحك ذلك لقطة واضحة لتوزيع الذاكرة على مستوى حالات العمليات المختلفة (التشغيل في المقدّمة والخلفية والخدمات التي يدركها المستخدم والتخزين المؤقت) ونطاقات فئات ذاكرة الوصول العشوائي، ما يساعدك في رصد القيم الشاذة للذاكرة.
  • عمليات الخروج بسبب قيود الذاكرة وتتبُّع أخطاء نفاد الذاكرة باستخدام Firebase Crashlytics: لكي تبقى على اطّلاع على حالات التدهور الشديد في الذاكرة قبل أن تؤثّر في مقاييسك الرئيسية، يقدّم الإصدار 20.1.0 من Crashlytics بيانات تصحيح أخطاء إضافية لمساعدتك في رصد أخطاء نفاد الذاكرة وعمليات الإغلاق بسبب قيود الذاكرة وتحديد أولويتها وإصلاحها. يتيح لك تتبُّع هذه الأحداث إلى جانب السجلات المخصّصة وبيانات وصفية على شكل مفتاح وقيمة الحصول على سياق فوري لحالة العملية عند حدوث خطأ في الذاكرة.
  • عمليات التتبُّع داخل الحقل باستخدام ProfilingManager: بالنسبة إلى الفِرق القادرة على الحفاظ على إطار عمل لمراقبة الأداء، تتيح واجهة برمجة التطبيقات ProfilingManager التي تم طرحها في Android 15 (المستوى 35 من واجهة برمجة التطبيقات) لتطبيقك طلب وجمع عناصر تصحيح أخطاء الذاكرة التفصيلية، مثل لقطات لأجزاء من ذاكرة Java وملفات تعريف الذاكرة، مباشرةً من الأجهزة المتاحة للبيع. يمكنك أيضًا بدء عمليات تسجيل تفريغ الذاكرة المؤقتة استنادًا إلى إشارات نظام محدّدة، مثل TRIGGER_TYPE_OOM وTRIGGER_TYPE_ANOMALY

يمكنك الاطّلاع على المستندات لمعرفة المزيد عن تقنيات مراقبة الذاكرة الأخرى.

الملخّص والخطوات التالية

مع توسيع Android لحدود الذاكرة لكل تطبيق على مستوى جميع فئات ذاكرة الوصول العشوائي، حان الوقت الآن لمراجعة استهلاك الذاكرة:

  1. إعطاء الأولوية لتحسين استخدام الذاكرة: تجنَّب تأثُّر تطبيقك بحدود ذاكرة التطبيق من خلال اتّباع أفضل الممارسات
  2. مراقبة استخدام الذاكرةراقِب سلوك الذاكرة في تطبيقك لرصد السلوك الشاذ وحلّه.  
  3. تحسين لعبتك: اتّبِع أحدث الإرشادات المتعلّقة بالألعاب وتطبيقات الوسائط المتعددة المعقّدة لتحقيق أقصى قدر من توفير الذاكرة في جميع حالات العملية.

مراجع وموارد مفيدة

من تأليف:
متابعة القراءة