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

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

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

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

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