المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : الدرس الثاني والأربعون : ال Gc دورة .net 2008


khaledbelal
02-26-2010, 04:17 PM
بسم الله الرحمن الرحيم .
السلام عليكم ورحمة الله وبركاته .

خلال دروسنا السابقة كنا نعرف متغيرات وفئات .. الخ ، ولكننا لم نسأل نفسنا كيف يتم تخزينها في الذاكرة ومتى يتم حذفها ، هذه الاسئلة سوف نجيب عليها في هذا الدرس من خلال مفاهيم ال Object lifetime وال GC .

عند تعريفك لكائن من فئة OBJECT FROM CLASS فإنك بالواقع تصبح ممسكاً ب refernce يشير إلى هذا الكائن الموجود في ال heap ، هذا ال reference يوجد ايضاً في stack خاص بالبرنامج .

بعد اغلاق البرنامج او انتهاء الدالة يتم حذف ال reference من ال stack ، سيكون التساؤل الطبيعي هو انه وفي هذه الحالة سوف تمتلئ الذاكرة بمئات الكائنات التي لا تجد من يشير لها ، يريحك ال garbage collector والذي يرمز له اختصاراً GC من هذا التساؤل حيث يقوم بحذف الفئات غير المستخدمة ، او في الحقيقة فهو يقوم بحذف جميع الفئات التي لم يعد بامكانك الوصول إليها من داخل البرنامج .

في ايام ال C++ كان من المفترض ان تقوم بحذف متغيراتك الغير مستخدمة اول بأول ، اما الآن مع GC فاصبحت جل المهام يتم تنفيذها دون ان تشعر .

الحالة الاكثر شيوعاً هي ان تقوم بعمل =null ، في الواقع هذا لا يعطي اشارة مباشرة لل GC لحذف كائنك من الذاكرة ، لكنه سيتم حذفه في لحظة ما لا يمكنك التحكم بها ، عندما تمتلئ الذاكرة مثلاً .

GC :

تحتوي الفئة GC على عدد من الداول التي تمكنك من التعامل المباشر معها ، هذه هي الدوال واستخداماتها :

http://vb4arab.com/vb/uploaded/3/01208376003.jpg

Finalize() :

يمكنك هذا الحدث من اقتناص وقت حذف الكائن ، يمكنك عمل overridding له وتنفيذ بعض المهام قبل تدمير الكائن .

يتم ذلك بالشكل التالي :

C#:

class example
{
~example()
{
Console.Beep();
}
}

vb.net:

Class example
Protected Overrides Sub Finalize()
Try
Console.Beep()
Finally
My****.Finalize()
End Try
End Sub
End Class