نحوه استفاده از ابزار Allocation Profiler

مگین کرنی
Meggin Kearney

از ابزار تخصیص پروفایلر برای یافتن اشیایی که به درستی زباله جمع آوری نمی شوند استفاده کنید و به حفظ حافظه ادامه دهید.

ابزار چگونه کار می کند

نمایه ساز تخصیص اطلاعات لحظه ای دقیق از نمایه ساز پشته را با به روز رسانی و ردیابی تدریجی پانل Timeline ترکیب می کند. مشابه این ابزارها، ردیابی تخصیص هیپ اشیا شامل شروع ضبط، انجام یک سری اقدامات و سپس توقف ضبط برای تجزیه و تحلیل است.

این ابزار در طول ضبط به صورت دوره‌ای عکس‌های فوری پشته‌ای می‌گیرد (به دفعات هر 50 میلی‌ثانیه!) و یک عکس فوری نهایی در پایان ضبط.

نمایه ساز تخصیص

فعال کردن نمایه ساز تخصیص

برای شروع استفاده از نمایه ساز تخصیص:

  1. مطمئن شوید که جدیدترین Chrome Canary را دارید.
  2. ابزار Developer Tools را باز کنید و روی نماد چرخ دنده در سمت راست پایین کلیک کنید.
  3. اکنون، پانل Profiler را باز کنید، باید نمایه ای به نام "Record Heap Allocations" را مشاهده کنید.

ثبت پروفایل تخصیص پشته

نمایه تخصیص پشته را بخوانید

نمایه تخصیص پشته محل ایجاد اشیاء را نشان می دهد و مسیر نگهدارنده را مشخص می کند. در عکس فوری زیر، میله‌های بالا نشان می‌دهند که چه زمانی اشیاء جدید در پشته پیدا می‌شوند.

ارتفاع هر نوار مطابق با اندازه اشیاء تخصیص یافته اخیر است، و رنگ میله ها نشان می دهد که آیا آن اشیاء هنوز در عکس فوری پشته ای زنده هستند یا خیر. نوارهای آبی اشیایی را نشان می‌دهند که هنوز در انتهای جدول زمانی زنده هستند، نوارهای خاکستری اشیایی را نشان می‌دهند که در طول خط زمانی اختصاص داده شده‌اند، اما پس از آن زباله جمع‌آوری شده‌اند:

عکس فوری نمایه ساز تخصیص

در عکس فوری زیر، یک عمل 10 بار انجام شده است. برنامه نمونه پنج شی را در حافظه پنهان نگه می دارد، بنابراین پنج نوار آبی آخر انتظار می رود. اما نوار آبی سمت چپ نشان دهنده یک مشکل بالقوه است.

سپس می‌توانید از لغزنده‌های موجود در جدول زمانی بالا برای بزرگ‌نمایی آن عکس فوری خاص و دیدن اشیایی که اخیراً در آن نقطه تخصیص داده شده‌اند استفاده کنید:

روی عکس فوری زوم کنید

با کلیک بر روی یک شی خاص در پشته درخت نگهدارنده آن در قسمت پایین عکس فوری پشته نشان داده می شود. بررسی مسیر نگهدارنده به شی باید به شما اطلاعات کافی بدهد تا متوجه شوید که چرا شی جمع‌آوری نشده است و می‌توانید تغییرات کد لازم را برای حذف ارجاع غیر ضروری انجام دهید.

مشاهده تخصیص حافظه بر اساس تابع

همچنین می توانید تخصیص حافظه را با تابع جاوا اسکریپت مشاهده کنید. برای اطلاعات بیشتر به بررسی تخصیص حافظه بر اساس تابع مراجعه کنید.