پساز بازیابی نمایه از دستگاه آزمایشی یا بارگیری آن از
بخش پشتی، میتوانید فایل را در رابط کاربری Perfetto باز کنید تا خطوط زمان،
وضعیتهای رشته، و نمودارهای حفظ حافظه را بررسی کنید. این صفحه نحوه پیمایش ردگیریهای سیستم ویرایششده و رونوشتهای پشته جاوا را که با ProfilingManager ضبط شدهاند شرح میدهد.
دیداریسازی ردیابیهای سیستم
فایل .perfetto-trace را در رابط کاربری Perfetto باز کنید تا فعالیت واحد پردازش مرکزی و رشته را درطول زمان بررسی کنید.
برای محافظت از حریم خصوصی کاربر، ProfilingManager ردگیریهای سیستم را با ترکیب کردن
فعالیت واحد پردازش مرکزی از همه فرایندهای دیگر در یک قطعه OtherProcesses ویرایش میکند.
بازرسی این قطعه ترکیبی همچنان به شما امکان میدهد تشخیص دهید که آیا کندی در
برنامه شما ناشی از یک گلوگاه داخلی بوده است یا بار کلی دستگاه.
شکل ۲ بخشهای اصلی ردگیری سیستم ویرایششده را برجسته میکند:
- فهرست CPU: همه پردازندههای دردسترس در دستگاهتان را نمایش میدهد.
- تکالیف CPU: نشان میدهد هر CPU درحال اجرای کدام رشتهها بوده است.
- نمای پردازشهای دیگر: منابع CPU مصرفشده توسط پردازشهای دیگر را نمایش میدهد.
- نمای پردازش: پردازش برنامهتان را نشان میدهد.
- نمای رشتهها: رشتههای درحال اجرا در فرایند شما و وضعیت رشته آنها (قابل اجرا (R)، درحال اجرا (R)، خواب (S)، خواب بیوقفه (D)) را نمایش میدهد که مستقیماً به وضعیتهای فرایند Linux نگاشت میشوند.
- برشهای ردیابی: این بخش حاشیهنویسیهای ردیابی را که توسط توسعهدهندگان برنامه یا چارچوب اضافه شده است نشان میدهد. این حاشیهنویسیها محاسبات بین
Trace.beginSectionوTrace.endSectionرا دربرمیگیرد.
برای کسب اطلاعات بیشتر درباره واسط کاربر Perfetto و تجسم ردیابی، به اسناد Perfetto مراجعه کنید.
دیداریسازی رونوشتهای پشته جاوا
وقتی رونوشت پشته جاوا را بااستفاده از PROFILING_TYPE_JAVA_HEAP_DUMP ضبط کردید،
فایل .perfetto-java-heap-dump حاصل را در رابط کاربری Perfetto باز کنید تا
نشتهای حافظه را شناسایی کنید یا استفاده از حافظه را بهینهسازی کنید. در کاوشگر Heapdump،
میتوانید نمودار پشته را کاوش کنید، نمودارهای شعلهای اندازههای تجمعی شیء را بررسی کنید،
و کلاسها، اشیاء، و عناصر غالب را مرور کنید، همانطور که در شکل ۳ نشان داده شده است.
تفاوت رونوشتهای پشته ProfilingManager با رونوشتهای HPROF
برخلاف رونوشتهای پشته .hprof استاندارد (مانند رونوشتهایی که با
Debug.dumpHprofData یا در Android Studio ضبط میشوند)، ProfilingManager یک
رونوشت پشته Perfetto ART (.perfetto-java-heap-dump) را ضبط میکند. بهجای رونوشتبرداری از
محتوای حافظه خام، ProfilingManager نمودار حفظ شیء و
فرادادههای اندازهگیری را ثبت میکند، درحالیکه دادههای خام ذخیرهشده در داخل اشیاء را حذف میکند:
- آنچه جمعآوری میشود:
- کلاسها و انواع: نام کلاسها، سلسلهمراتب کلاسهای برتر، بارکنندههای کلاس، اندازههای نمونه، و انواع مرجع (مانند کلاسهای معمولی، آرایهها، رشتهها، یا مراجع ضعیف، نرم، نهاییساز، و شبح).
- نمونهها و اندازههای شیء: اندازه سطحی هر شیء (
self_size)، ناحیه توده آن (HEAP_TYPE_APP،HEAP_TYPE_ZYGOTE، یاHEAP_TYPE_BOOT_IMAGE)، و حافظه بومی مرتبط ثبتشده ازطریقNativeAllocationRegistry. - ریشههای GC و ارجاعها: ریشههای جمعآوری زباله (مانند متغیرهای سراسری و محلی JNI، چارچوبهای پشتهای جاوا، و اشیای رشتهای) و زنجیرههای ارجاع سطح فیلد که نشان میدهند کدام شیء شیء دیگری را نگه میدارد و ازطریق کدام نام فیلد.
- فرادادههای اندازهگیری منتخب: فرادادههای غیرحساس برای انواع چارچوبهای خاص، مانند ابعاد
Bitmap(mWidthوmHeight).
- آنچه حذف شده است: مقادیر فیلد اولیه واقعی، محتوای نویسه
String، و محمولههای آرایه خام (byte[]،char[]، و دیگر آرایههای اولیه). حذف محتوای شیء خام از حریم خصوصی کاربر در دستگاههای تولید محافظت میکند و فایلهای تخلیه را بهطور قابلتوجهی کوچکتر نگه میدارد.
مراحل بعدی
علاوهبر بازرسی بصری در Perfetto UI، میتوانید نمایهها را با PerfettoSQL پُرسمان کنید، ردیابیها را بهصورت انبوه تجزیهوتحلیل کنید، یا نمایهها را با هوش مصنوعی تجزیهوتحلیل کنید.