![]() |
|
الدرس الثاني والأربعون - ال Gc - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : الأقسام التعليمية - المنتدى القديم (http://vb4arb.com/vb/forumdisplay.php?fid=90) +--- قسم : قسم دورات المنتدى (http://vb4arb.com/vb/forumdisplay.php?fid=113) +---- قسم : دورة .net 2008 . لنبدأ سوياً (http://vb4arb.com/vb/forumdisplay.php?fid=138) +---- الموضوع : الدرس الثاني والأربعون - ال Gc (/showthread.php?tid=5636) |
الدرس الثاني والأربعون - ال Gc - RaggiTech - 14-10-12 كاتب الموضوع : أحمد جمال
بسم الله الرحمن الرحيم .السلام عليكم ورحمة الله وبركاته . خلال دروسنا السابقة كنا نعرف متغيرات وفئات .. الخ ، ولكننا لم نسأل نفسنا كيف يتم تخزينها في الذاكرة ومتى يتم حذفها ، هذه الاسئلة سوف نجيب عليها في هذا الدرس من خلال مفاهيم ال Object lifetime وال GC . عند تعريفك لكائن من فئة OBJECT FROM CLASS فإنك بالواقع تصبح ممسكاً ب refernce يشير إلى هذا الكائن الموجود في ال heap ، هذا ال reference يوجد ايضاً في stack خاص بالبرنامج . بعد اغلاق البرنامج او انتهاء الدالة يتم حذف ال reference من ال stack ، سيكون التساؤل الطبيعي هو انه وفي هذه الحالة سوف تمتلئ الذاكرة بمئات الكائنات التي لا تجد من يشير لها ، يريحك ال garbage collector والذي يرمز له اختصاراً GC من هذا التساؤل حيث يقوم بحذف الفئات غير المستخدمة ، او في الحقيقة فهو يقوم بحذف جميع الفئات التي لم يعد بامكانك الوصول إليها من داخل البرنامج . في ايام ال C++ كان من المفترض ان تقوم بحذف متغيراتك الغير مستخدمة اول بأول ، اما الآن مع GC فاصبحت جل المهام يتم تنفيذها دون ان تشعر . الحالة الاكثر شيوعاً هي ان تقوم بعمل =null ، في الواقع هذا لا يعطي اشارة مباشرة لل GC لحذف كائنك من الذاكرة ، لكنه سيتم حذفه في لحظة ما لا يمكنك التحكم بها ، عندما تمتلئ الذاكرة مثلاً . الدرس الثاني والأربعون - ال Gc - RaggiTech - 14-10-12 GC : تحتوي الفئة GC على عدد من الداول التي تمكنك من التعامل المباشر معها ، هذه هي الدوال واستخداماتها : الدرس الثاني والأربعون - ال Gc - RaggiTech - 14-10-12 Finalize() : يمكنك هذا الحدث من اقتناص وقت حذف الكائن ، يمكنك عمل overridding له وتنفيذ بعض المهام قبل تدمير الكائن . يتم ذلك بالشكل التالي : C#: كود : class examplevb.net: كود : Class example |