نمایه‌ها را در واسط کاربر Perfetto تجسم کنید

پس‌از بازیابی نمایه از دستگاه آزمایشی یا بارگیری آن از بخش پشتی، می‌توانید فایل را در رابط کاربری Perfetto باز کنید تا خطوط زمان، وضعیت‌های رشته، و نمودارهای حفظ حافظه را بررسی کنید. این صفحه نحوه پیمایش ردگیری‌های سیستم ویرایش‌شده و رونوشت‌های پشته جاوا را که با ProfilingManager ضبط شده‌اند شرح می‌دهد.

دیداری‌سازی ردیابی‌های سیستم

فایل .perfetto-trace را در رابط کاربری Perfetto باز کنید تا فعالیت واحد پردازش مرکزی و رشته را درطول زمان بررسی کنید.

خط زمان ردیابی سیستم ویرایش‌شده در واسط کاربر Perfetto
شکل ۱. نمونه ردیابی ویرایش‌شده.

برای محافظت از حریم خصوصی کاربر، ProfilingManager ردگیری‌های سیستم را با ترکیب کردن فعالیت واحد پردازش مرکزی از همه فرایندهای دیگر در یک قطعه OtherProcesses ویرایش می‌کند. بازرسی این قطعه ترکیبی همچنان به شما امکان می‌دهد تشخیص دهید که آیا کندی در برنامه شما ناشی از یک گلوگاه داخلی بوده است یا بار کلی دستگاه.

شکل ۲ بخش‌های اصلی ردگیری سیستم ویرایش‌شده را برجسته می‌کند:

بخش‌های شماره‌گذاری‌شده ردیابی سیستم ویرایش‌شده در واسط کاربر Perfetto
شکل ۲. بخش‌های ردیابی ویرایش‌شده.
  1. فهرست CPU: همه پردازنده‌های دردسترس در دستگاهتان را نمایش می‌دهد.
  2. تکالیف CPU: نشان می‌دهد هر CPU درحال اجرای کدام رشته‌ها بوده است.
  3. نمای پردازش‌های دیگر: منابع CPU مصرف‌شده توسط پردازش‌های دیگر را نمایش می‌دهد.
  4. نمای پردازش: پردازش برنامه‌تان را نشان می‌دهد.
  5. نمای رشته‌ها: رشته‌های درحال اجرا در فرایند شما و وضعیت رشته آن‌ها (قابل اجرا (R)، درحال اجرا (R)، خواب (S)، خواب بی‌وقفه (D)) را نمایش می‌دهد که مستقیماً به وضعیت‌های فرایند Linux نگاشت می‌شوند.
  6. برش‌های ردیابی: این بخش حاشیه‌نویسی‌های ردیابی را که توسط توسعه‌دهندگان برنامه یا چارچوب اضافه شده است نشان می‌دهد. این حاشیه‌نویسی‌ها محاسبات بین Trace.beginSection و Trace.endSection را دربرمی‌گیرد.

برای کسب اطلاعات بیشتر درباره واسط کاربر Perfetto و تجسم ردیابی، به اسناد Perfetto مراجعه کنید.

دیداری‌سازی رونوشت‌های پشته جاوا

وقتی رونوشت پشته جاوا را بااستفاده از PROFILING_TYPE_JAVA_HEAP_DUMP ضبط کردید، فایل .perfetto-java-heap-dump حاصل را در رابط کاربری Perfetto باز کنید تا نشت‌های حافظه را شناسایی کنید یا استفاده از حافظه را بهینه‌سازی کنید. در کاوشگر Heapdump، می‌توانید نمودار پشته را کاوش کنید، نمودارهای شعله‌ای اندازه‌های تجمعی شیء را بررسی کنید، و کلاس‌ها، اشیاء، و عناصر غالب را مرور کنید، همان‌طور که در شکل ۳ نشان داده شده است.

«کاوشگر رونوشت پشته» در میانای کاربری Perfetto که نمودار شعله‌ای از اندازه‌های شیء پشته جاوا را نشان می‌دهد.
شکل ۳.‏ نمودار شعله‌ای رونوشت پشته جاوا در واسط کاربر Perfetto.

تفاوت رونوشت‌های پشته 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 پُرسمان کنید، ردیابی‌ها را به‌صورت انبوه تجزیه‌وتحلیل کنید، یا نمایه‌ها را با هوش مصنوعی تجزیه‌وتحلیل کنید.