غالبًا ما تكون الصور النقطية هي أكبر العناصر التي تستهلك الذاكرة في التطبيق، كما أنّ عمليات فك الترميز وتغيير الحجم تكون غالبًا على المسار الحرج لعرض اللقطات. يؤدي تحسين استخدام الذاكرة للصور النقطية إلى تحسينات كبيرة في سرعة استجابة واجهة المستخدم وعمر البطارية والثبات العام من خلال تقليل إيقاف مؤقت لعرض واجهة المستخدم وأخطاء ANR وعمليات إغلاق التطبيقات المرتبطة بأخطاء نفاد الذاكرة (OOM).
تحديد الاستخدام المرتفع للذاكرة في الصور النقطية
توفر مؤشرات Android الحيوية مقاييس حول استهلاك ذاكرة الصور النقطية للتطبيق من خلال تجميع البيانات من أجهزة Android. يتم احتساب قيم هذه المقاييس بشكل تلقائي كملخّص للبيانات خلال فترة 28 يومًا. تساعد هذه البيانات في تحديد المؤشرات وحالات التراجع المحتملة في كفاءة الذاكرة على مستوى أنواع الأجهزة وإصداراتها المختلفة.
تشارك "مؤشرات Android الحيوية" استخدام ذاكرة الصور النقطية لتطبيقك مقسَّمًا حسب حالات العملية التالية:
- التطبيق في المقدّمة: تكون عملية التطبيق مرئية. من المتوقّع أن يكون معدّل P99 أعلى بكثير في المقدّمة مقارنةً بحالات العمليات الأخرى، ولكن على المطوّرين التحقّق مما إذا كانت نسبة P99/P50 كبيرة (على سبيل المثال، أعلى من 3.5 مرّات)، لأنّ ذلك يشير غالبًا إلى تسرُّب ذاكرة في صورة نقطية. يمكنك تحديد ذلك من خلال البحث عن تباين بين الاستخدام المعتاد (P50) والاستخدام الشاذ (P99)، ففي حين أنّ تضخّم الأصول العام يؤدي إلى زيادة الذاكرة بشكل موحّد في جميع النسب المئوية، تتراكم عمليات تسريب الذاكرة بمرور الوقت، ما يؤدي إلى تحريف البيانات في النهاية (P99) بشكل كبير. تأكَّد من عدم استمرار عمليات تخصيص الصور النقطية في المقدّمة بدون داعٍ بعد انتقال التطبيق إلى حالات أخرى.
- الخدمات التي يلاحظها المستخدم: يتم تشغيل عملية التطبيق في حالة ملحوظة. ويشمل ذلك الخدمات التي تعمل في المقدّمة والمهام السريعة ومهام نقل البيانات التي يبدؤها المستخدم. يجب ألّا تحتفظ التطبيقات بعمليات تخصيص كبيرة لخريطة البت في المقدّمة عند الانتقال إلى هذه الحالات. وبما أنّ هذه الخدمات مصمَّمة لتنفيذ مهام تستغرق وقتًا طويلاً، فإنّ الاحتفاظ بموارد كبيرة يؤدي إلى تدهور تجربة المستخدم بشكل عام ويجبر برنامج Low Memory Killer Daemon (LMKD) على استعادة الذاكرة من خلال إنهاء العمليات ذات الأولوية المنخفضة.
- في الخلفية: يشغّل التطبيق خدمة تُشغَّل في الخلفية أو تم تصغيره مؤخرًا إلى الخلفية، ولكن لم يتم تخزينه مؤقتًا بعد. وبما أنّ حالة العملية هذه أقل أهمية من العمليات المرئية أو التي تعمل في المقدّمة، يجب أن تحرص التطبيقات على تحرير أصول الصور النقطية الكبيرة هنا لتقليل الضغط على الذاكرة.
- مخزَّن مؤقتًا: يكون التطبيق في حالة التخزين المؤقت. تتأثر هذه الحالة بشكل كبير بضغط ذاكرة النظام، مثل عمليات LMK. يجب أن تعمل التطبيقات بشكل استباقي على تقليل استخدام ذاكرة الصور النقطية في هذه الحالة لتجنُّب إزالتها من قِبل نظام التشغيل.
العوامل التي تساهم في ارتفاع استخدام ذاكرة الصور النقطية
قد يتم أيضًا تضمين الذاكرة الافتراضية التي لم يتم استخدامها مطلقًا في عملية الاحتساب. إذا لاحظت ارتفاعًا غير متوقّع في استخدام الذاكرة للصور النقطية، تأكَّد من أنّك لا تخصّص ذاكرة لا يتم استخدامها.