يمكنك تسجيل عدة أنواع من ملفات تعريف الأداء في Android. يساعدك جمع بيانات الأداء في تحديد المشاكل المتعلقة بسرعة تشغيل تطبيقك ومقدار الذاكرة التي يستخدمها ومقدار الطاقة التي يستهلكها وغير ذلك.
يوضّح هذا المستند أنواع الملفات الشخصية الأكثر فائدة وحالات استخدام كل نوع لتحديد المشاكل الشائعة المتعلّقة بالأداء وحلّها.
عمليات تتبُّع النظام
تتبُّع النظام هو ملف تعريف قوي يحتوي على معلومات حول العمليات، والخيوط، ومعلومات التوقيت، وتنفيذ وحدة المعالجة المركزية والمهام، والأحداث المحدّدة من قِبل النظام أو المستخدم.
من منظور التطبيق، يمكن أن يشمل نوع المعلومات في عمليات التتبُّع نطاقًا واسعًا من المجالات، بما في ذلك وقت الاستجابة والتشوّش والذاكرة والبطارية وغير ذلك.
تحتوي عمليات تتبُّع النظام على الأحداث المستندة إلى الرموز التالية التي يمكن أن تكون من النظام أو من المستخدم. الأحداث المستندة إلى الرموز هي أحداث يمكن للمستخدمين بدءها من خلال استدعاءات الدوال.
- شرائح التتبُّع: تمثّل الوقت بين نقاط مختلفة في الرمز البرمجي. ويمكن إضافتها باستخدام واجهات برمجة التطبيقات
Trace.beginSectionوTrace.endSection. - عدادات التتبُّع: قيم رقمية تمثّل المقاييس، مثل حجم الذاكرة المؤقتة. يمكن إضافتها باستخدام واجهة برمجة التطبيقات
Trace.setCounter.
تحتوي عمليات تتبُّع النظام أيضًا على مقاييس يمكن إنشاؤها من طلبات بحث PerfettoSQL ويمكن استخدامها لإجراء تحليلات أو مقارنة عمليات التتبُّع.
ننصحك باستخدام عمليات تتبُّع النظام لتنفيذ المهام التالية:
تشخيص المشاكل المتعلّقة بوقت الاستجابة: تُعدّ عمليات تتبُّع النظام ممتازة للعثور على مشاكل وقت الاستجابة الناتجة عن التأخيرات أو عمليات الانتظار أو مشاكل الجدولة. لا توفّر أدوات تحليل الأداء الأخرى، مثل الملفات الشخصية المستندة إلى العيّنات، معلومات التوقيت التي توفّرها عمليات تتبُّع النظام.
العثور على العمليات الحسابية المكرّرة: يمكن أن يكشف التتبُّع ما إذا كان يتم تكرار عمليات حسابية معيّنة، ما قد يشير إلى عمليات غير ضرورية.
تشخيص المشاكل المتعلّقة بتعارض الأقفال: من خلال المعلومات المتعلّقة بحالات سلاسل التعليمات البرمجية والشرائح التي تعرض وقت حظر الموارد، يمكنك تحديد ما إذا كانت عمليات القفل (مثل عمليات الحظر
synchronized) تتسبّب في حدوث تأخيرات في رحلات المستخدمين.فهم التنفيذ المتعدّد المهام في تطبيقك: تقدّم عمليات التتبُّع عرضًا لعدة سلاسل تعليمات برمجية، وتوضّح حالة كل سلسلة وجميع شرائح التتبُّع التي أضافها النظام أو تطبيقك. يساعدك عرض التنفيذ المتعدّد المهام هذا في فهم سلاسل التعليمات البرمجية النشطة أو غير النشطة أو ما يتم تنفيذه وكيفية تفاعلها.
إجراء تحليلات أداء معقّدة: تساهم واجهة المستخدم الفعّالة وإمكانية عرض أنواع مختلفة من المعلومات في جعل عمليات تتبُّع النظام مفيدة في تصحيح مجموعة كبيرة من مشاكل الأداء، بما في ذلك وقت الاستجابة والذاكرة واستخدام البطارية.
تتيح عمليات تتبُّع النظام أيضًا تنفيذ طلبات بحث باستخدام PerfettoSQL. تتيح لك هذه الميزة الفعّالة ما يلي:
- استخراج بيانات محدّدة
- تحويل بيانات التتبُّع إلى مقاييس مخصّصة
- يمكنك إنشاء مسارات تصحيح الأخطاء من طلبات البحث لتسهيل عرض العناصر التي تهمّك أكثر في واجهة مستخدم Perfetto.
- إجراء تحليلات معقّدة مباشرةً في واجهة مستخدم Perfetto
لقطات لعناصر متعدّدة من عينات التكدس
تعمل عيّنات ملفات تعريف سلسلة استدعاء الدوال البرمجية من خلال تسجيل عيّنات من تنفيذ الرمز البرمجي وتخزين معلومات سلسلة استدعاء الدوال البرمجية بمعدّل محدّد أثناء تنفيذ سلسلة التعليمات للمهام على وحدة المعالجة المركزية. ويوفّر ذلك إحصاءات عن الإجراءات التي يتّخذها الرمز البرمجي أثناء التنفيذ.
ننصحك باستخدام عيّنات الرموز البرمجية لتنفيذ ما يلي:
- تحسين النقاط الفعّالة: تساعد عيّنات سلسلة استدعاء الدوال البرمجية في تحديد أجزاء الرمز التي تتضمّن نشاطًا كبيرًا لوحدة المعالجة المركزية، ما يعني أنّ سلسلة التنفيذ تكون غالبًا في حالة "قيد التشغيل".
- فهم تنفيذ الرمز البرمجي: يمكن أن تساعدك عيّنات سلسلة استدعاء الدوال البرمجية في فهم السلوك العام لقاعدة الرموز البرمجية.
- تحديد الرمز الذي يجب عدم تنفيذه قد تجد حِزم بيانات استدعاء لم يكن من المفترض أن يتم تنفيذها على الإطلاق، ما يشير إلى فرص فورية لتحسين الأداء.
لقطات لأجزاء من الذاكرة
تعرض عمليات تفريغ ذاكرة التخزين المؤقت في Java لقطة من ذاكرة التخزين المؤقت في Java لتطبيقك. تتضمّن هذه اللقطة جميع العناصر وكيفية الإشارة إلى بعضها البعض في وقت أخذ التفريغ.
ننصحك بجمع تفريغات الذاكرة المؤقتة لتنفيذ ما يلي:
- الكشف عن العناصر المكرّرة: تعرض عمليات تفريغ الذاكرة المؤقتة عدد الكائنات النشطة، وهو أمر مفيد لتتبُّع الكائنات المكرّرة. وتوفّر أيضًا مراجع الكائنات، ما يساعدك في تحديد موقع الرمز البرمجي الذي تم فيه إنشاء الكائنات.
- العثور على تسرّبات الذاكرة يمكن أن تكشف عمليات تفريغ الذاكرة عن بيانات الذاكرة التي لم يعُد من المفترض أن تكون قيد الاستخدام عند إجراء عملية التفريغ، ما يشير إلى احتمال حدوث تسرّب للذاكرة.
- تحديد العناصر التي يمكن تحسينها: من خلال عرض العناصر التي تستخدم مقدارًا كبيرًا من الذاكرة وعددها، تساعد عمليات تفريغ الذاكرة المؤقتة في تحديد أنماط الاستخدام غير الفعّال للذاكرة.
لقطات لعناصر متعدّدة
تتوفّر ملفات تعريف الذاكرة المكدّسة في إصدارَين، أحدهما أصلي والآخر Java، وهي ممتازة لتصحيح أخطاء الذاكرة. وهي تشبه عيّنات حزمة استدعاء الدوال البرمجية، ولكن بدلاً من قياس دورات وحدة المعالجة المركزية، يتم أخذ العيّنات عند تخصيص الذاكرة.
ننصحك باستخدام ملفات تعريف الذاكرة المؤقتة لتنفيذ ما يلي:
- تقليل الاستخدام الزائد للذاكرة: توفّر ملفات تعريف الذاكرة العشوائية أمثلة مع مواقع الرموز البرمجية لعمليات تخصيص الذاكرة. يساعدك ذلك في تحديد المناطق التي تنشئ العديد من العناصر المؤقتة، ما قد يساهم في عمليات جمع البيانات غير الضرورية (GC) المتكررة في تطبيقك.
- الكشف عن تسرّبات الذاكرة: يمكن استخدام ملفات تعريف الذاكرة لأخذ لقطات لعناصر متعدّدة مع ملفات تعريف الذاكرة الأخرى لتشخيص عمليات تسرّب الذاكرة وإصلاحها. تساعدك هذه الأدوات في تحديد المواقع التي تستهلك مقدارًا أكبر بكثير من الذاكرة مقارنةً بما هو متوقّع.
دمج الملفات الشخصية
في كثير من الأحيان، ستحلّل الأداء باستخدام ملف شخصي واحد. ومع ذلك، يمكن أن يؤدي جمع ملفات شخصية متعددة أو ملف شخصي واحد مجمّع إلى تقديم صورة أكثر اكتمالاً والمساعدة في تشخيص المشاكل المعقدة التي لا يمكن لملف شخصي واحد تشخيصها.
إليك بعض السيناريوهات التي يكون فيها دمج الملفات الشخصية مفيدًا:
السيناريو 1: التحقيق في التعليمات البرمجية غير المزوّدة بأدوات. قد يعرض تتبُّع النظام وقت الاستجابة للعمليات التي سبق لك قياسها. ومع ذلك، قد تحتاج إلى مزيد من المعلومات حول الأجزاء غير المُسجَّلة من الرمز البرمجي الذي يتم تنفيذه خلال هذه الأوقات. للتدقيق في ذلك، سجِّل ملفًا شخصيًا لمجموعة استدعاءات الدوال البرمجية لفهم الرمز الذي تم تنفيذه. يمكن أن تساعدك هذه المعلومات بعد ذلك في تحسين التتبُّع من خلال إضافة المزيد من شرائح التتبُّع.
السيناريو 2: تحليل تسريبات الذاكرة وعمليات جمع البيانات غير المرغوب فيها لنفترض أنّ عملية تتبُّع النظام تعرض زيادة مستمرة في ذاكرة كومة Java بسبب عمليات التخصيص، ما يؤدي إلى عمليات جمع البيانات غير الضرورية (GC) بشكل متكرر. لفهم الكائنات التي تم تخصيصها، يمكنك الحصول على ملف تعريف للذاكرة المؤقتة أو تفريغ الذاكرة المؤقتة. يساعدك هذا النهج المجمّع في تحديد طرق لتقليل استخدام الذاكرة. على سبيل المثال، قد يؤدي تقليل عمليات التخصيص غير الضرورية أو القابلة للتحسين باستخدام التخزين المؤقت إلى منع حدوث عمليات جمع البيانات غير الضرورية.