Garbage Collector در دارت
Garbage Collector در دارت
Garbage Collector در دارت به طور Generational میباشد و مشمول دو مرحله میباشد: «جستجو فضای نو» (Young Space Scavenger) و «نمادگذاری برابر و گردآوریآوریکنندههای طراحی اپلیکیشن در مشهد روبشی» (Parallel Mark Sweep Collectors).
e
کلیک فرمایید
مجالبندی
جهت معدودخیس کردن تأثیرهای «توده آشغال» (Garbage Collection) روی نرم افزار و کوشش رابط کاربری، Garbage Collector قلابهایی به موتور فلاتر تولید مینماید که هنگامی موتور تشخیص دهد نرم افزار بدون شغل میباشد و استفاده کننده تعاملی با آن ندارد، آغاز به عمل مینماید. براین اساس فرصتی در دست Garbage Collector قرار می گیرد تا فازهای جمع آشغال خویش را سوای تولید اشکالی در کوشش نرم افزار اعمال نماید.
Garbage Collector می تواند فشردهسازی لغزشی را نیز در طول این برهه زمانیهای بیکاری اعمال نماید و براین اساس سربار خاطر را با کاستن از تکه تکه شدن (Fragmentation) یاد کم کند.
مرحله جستجو فضای تازه
این مرحله برای تمیزسازی اشیای با قدمت کوتاه مانند ویجتهای بیشرایط به کارگیری میگردد. با این کهاین مرحله مسدودکننده میباشد؛ ولی بسیار سریعخیس از مرحله دوم نشانگذاری/روبش میباشد. مرحله دوم هنگامی یار با فرصتبندی اعمال گردد سبب ساز تولید تاخیرهایی در موادتشکیل دهنده بصری نرم افزار در حین جاری ساختن میگردد.
اشیاء بر پایه ی ماهیت خویش در فضای پیوستهای از خاطر اختصاص می یابند و وقتی که شی ءها ساختوساز می شوند به فضای مو جود آتی یاد اختصاص می یابند تا وقتیکه تک تک فضای اختصاصیافته مالامال خواهد شد. دارت از اختصاص اشارهگر bump برای اختصاص سریع در فضای نو استعمال مینماید که موجب ارتقا سرعت قابلمراعاتای درین روند میگردد.
فضای تازه هنگام اختصاص یافتن اشیای نو مشتمل بر دو نصفه میباشد که به اسم نیم گوشه و کنار شناخته می شوند. هر توشه صرفا یک نصفه به کار گیری می گردد. در حالی که یک نصفه فعال میباشد، نصفه دیگر غیر فعال باقی میماند. اشیای تازه در نصفه فعال اختصاص می یابند و هنگامی که نصفه دیگر لبریز گردد، اشیای زنده از نصفه فعال به نصفه غیر فعال نسخه برداری میشوند و اشیای مرده نادیده گرفته می گردند. آن گاه نصفه غیر فعال، فعال می گردد و این پروسه تکرار میگردد.
برای انتخاب این که شی ءها زنده یا این که مرده میباشند، Collector از اشیای ریشه مانند متغیرهای پشته شروع مینماید و آنچه را ارجاع دادهاند نظارت مینماید. آنگاه اشیای ارجاع یافته را جابجایی میدهد. درین مرحله نظارت مینماید که اشیای ارجاع یافته به کجا اشاره مینمایند و این اشیای ارجاع یافته را جابجایی میدهد. این پروسه تاوقتیکه کلیه اشیای زنده جابجایی یابند تداوم می یابد. اشیای مرده دیگر هیچ ارجاعی ندارند و از این رو در آنجا باقی میمانند و در پی زمانی garbage collection آجل چهره بدهد، اشیای زنده روی آنها نسخه برداری می گردند.
Garbage Collection در مرحله جستجو فضای جدید
آرمگذاری برابر و روبش همزمان
هنگامی که شی ها به قدمت معینی برسند به فضای یاد جدیدی جابجایی می یابند که از سوی collector نسل دوم یعنی mark-sweep مدیر می شود.
تکنیک توده آشغال دراین قسمت دو مرحله دارااست: آغاز گراف شیء پیمایش میشود و اشیایی که هنوز گزینه به کار گیری می باشند نشانگذاری می شوند. در طول مرحله دوم، مجموع یاد نسخه برداری میشود و هر شیئی که آرمگذاری نشده میباشد حذف می گردد. بعد از آن کلیه فلگها منزه می گردند.
این صورت از جمع آشغال در مرحله نمادگذاری موجب انسداد می گردد، زیرا هیچ تغییری در یاد نمیتواند صورت بدهد و نخ رابط کاربری مسدود می گردد. این عده، فراوانی یه خرده دارااست و اشیای با قدمت کوتاه عموماً از سوی «جستجو فضای نو» مدیر میگردد؛ البته مواقعی وجود دارا هستند که سیستم مجال اجرای دارت بایستی آویزان خواهد شد تا این نوع جمع آشغال اعمال خواهد شد. با اعتنا به بضاعت فلاتر برای فرصتبندی توده، تأثیر این حالت اندک خواهد بود.
قابل ذکر میباشد که چنانچه یک نرم افزار از «فرضیه نسل ضعیف» تقلید نکند، یعنی اکثر اوقات اشیای آن در سن نادر نمیرند، دراینصورت این صورت از توده به مراتب بیشتر صورت میدهد. با دقت به طرز پیادهسازی ویجتهای فلاتر این احتمال اندک میباشد؛ البته نکتهای میباشد که بایستی در خیال داشت.
ایزولتها (Isolates)
قابل ذکر میباشد که ایزولت های فلاتر خاطر هیپ منحصر به فرد خویش را دارا هستند که غیر وابسته از همدیگر میباشند. ازآنجاکه هر ایزولت در یک نخ منقطع انجام میگردد، رویدادهای توده آشغال برای هر ایزولت تأثیری روی تلاش ایزولت های دیگر نخواهد داشت. استعمال از ایزولت ها جهت دوری از انسداد رابط کاربری و معدود کردن توشه پردازش شغلهای هنگفت مطلوب میباشد.
صحبت آخری
دراین نوشته به پژوهش نحوه استعمال از Garbage Collector قوی برای کاستن از تأثیرهای انسدادی روی داد عده آشغال در نرم افزارهای فلاتر پرداختیم. بدین ترتیب نباید از Garbage Collector بترسید زیرا به بهبود کارکرد نرم افزار شما بسیار یاری مینماید.