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