الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

garabge collector

مغلق
بدأه فتاة الثلج في 23 أبريل 2005 · 8 رد · 1,057 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله..

هل من الممكن مساعدتي في البحث عن معلومات عن garabgecollector

في السي شارب وأتمنى لو تكون باللغة العربية.

ولكم الشكر

#2

وعليكم السلام ورحمة الله وبركاته ,

الـ GC تغني المبرمج عن التفكير في أمر تحرير الذاكره , فهو يقوم بطريقة أوتوماتيكيه بالنظر الى الـ Objects الموجود في الـ Heap والتي لم تعد تستخدم من قبل البرنامج , ثم يقوم بمحاولة اخراجها من الذاكره.

فترة عمر المتغير تنحصر فقط داخل الـ {Scope} , واذا انتهى مثلا هذا الـ {Scope} تقوم GC بتولي أمره , وتحرير الذاكره منه.

#Read

http://MoutazShams.blogspot.com

projects003.gif

أعتذر عن التغيب هذه الأيام نظرا للانشغال المريب

#3

أضافة إلي ما قاله الأخ معتز

أعتقد أن GC لا تعمل أوتوماتيكيا وحتي نجعلها تعمل يجب علينا عمل DETRACTOR لل CLASS

الذي نريد أن تتعامل GC مع الكائنات المكونة منه

مثال : إذا أنشأنا CLASS يسمي MYCLASS وأردنا أن ننشي منه أكثر من OBJECT وأردنا أن تتعامل معه GC بمعني أنها تراقبه وعندما تجد OBJECT من هذا CLASS مهمل تقوم بمسحه من الذاكرة

لعمل ذلك يجب عمل DETRACTOR لهذا الكلاس بالشكل التالي

class myclass
{

 ~myclass()
	{

	}

}

34804main_NASA_TV_HOMETN.jpg

#4

مما أعلمه عن GC هو أنه يعمل ضمن فترات زمنية مختلفة من أجل تحرير موارد الذاكرة التابعة للبرنامج في حال عدم استخدامها, وليس من الضروري بناء هادم لصف أو غيره مع العلم أن هذا الأمر هو أفضل, ويتم استخدام المنهج Dispose لتحرير موارد الذاكرة التي يستخدمها الصف, وعند بناء صف خاص بك تستطيع تطبيق هذا المنهج بتحقيق الواجهة IDisposable من أجل دعم المنهج Dispose وضمن هذا المنهج يتم تحرير الموارد التي يستخدمها الصف...

كما يمكن استدعاء GC بشكل يدوي من قبل المبرمج, وذلك باستدعاء مناهج الصف GC...

والله أعلم...

اللهم علمنا ما ينفعنا وانفعنا بما علمتنا

#5

عفوا يا VIPER_HEAD , فان أفضل مميزات الـ Garbage Collection انها تعمل بشكل أوتوماتيكي عوضا عن استخدام delete.فكما قلت في السابق انها تريح المستخدم من عملية ادارة الذاكره.

فانها تبدأ في العمل عندما تريد انت ان تقوم مثلا بحجز Object وتجد ان الـ Heap قد أصبحت ممتلئة , حينها يقوم الـ Garbage Collector بتجميع معلومات حول الـ Objects الموجوده في الـ Heap , وهل هذه الـ Objects مازال لها Reference ام لا ؟ وعلى هذا يتم تحديد الـ Objects الواجب اتلافها وتحريرها من الذاكره.

اما الـ Destructor الذي وضعت عنه مثالا في الأعلى يتم استدعائه فقط من قبل الـ Garbage Collection وذلك عند عملية تحرير الـ Object من الذاكره , ولا يتوجب علينا انشائه لتشغيل الـ Garbage Collection !!

وبالرغم من ان الـ Garbage Collection تعمل بشكل أوتوماتيكي الا اننا يمكننا ان نستدعيها بالقوة :) كما قال الأخ اسماعيل , ويوجد بعض الـ Methods التي تستخدم في ذلك مثل Collect و WaitForPendingFinalizers.

كنت اود ان أرفق مثالا , لكن انا عاوز أناااااااام ونعسااااااان , قمت بتحرير المشاركه مليون مره B)

تم تعديل هذه المشاركة بواسطة معتز شمس في 25 أبريل 2005 في 07:13

#Read

http://MoutazShams.blogspot.com

projects003.gif

أعتذر عن التغيب هذه الأيام نظرا للانشغال المريب

#6

الGC يعمل بشكل دائم على Thread مختلفة بالتوازي مع البرنامج و يعمل على ايجاد ال Objects التي لم يصبح لها Reference في ال Heap و يقوم بازالتها (اي لم يعد احد يستخدمها)

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#7
اقتباس
أعتقد أن GC لا تعمل أوتوماتيكيا وحتي نجعلها تعمل يجب علينا عمل DETRACTOR لل CLASS

كما ذكر الأخوة ف ال GC يعمل بشكل اتوماتيكي، وهو ياخذ low thread في الوضع العادي لكن ترتفع اولوية ال thread الخاصة به عند بعض الحالات ومنها

1. عدم وجود موارد اضافية في الجهاز، سوف يعمل لتحرير ال objects التي تم الانتهاء من استخدامها

2. دخول الكمبيوتر في وضع الخمول ideal

3. عند إستدعائه بشكل مباشر( غصبن عنو :D ) مثل ما ذكر الاخوة

ايضا لا يمكن معرفة الوقت الذى ممكن ان يتم في عمل عملية التحرير للموارد، فهذا شيء لا يهم المبرمج

وعادة يتم عمل Override ل Dispose Method عندما يستخدم الصنف موارد من خارج الكود المدار managed code، ففي هذه الحالة لا يقوم ال GC بتحرير الذاكرة الخاصة بها، لذلك يتم إستخدام ال Dispose لكتابة هذا الكود داخلها، وبالطبع يمكن استدعاء dispose من خلال الكود عند الانتهاء من استخدام الصنف، او تركه لل GC

تم تعديل هذه المشاركة بواسطة محمد نسمان في 25 أبريل 2005 في 18:53

لا تحزن:

إن كنت فقيرا فغيرك محبوس في دين، وإن كنت لا تملك وسيلة نقل فسواك مبتور القدمين، وان كنت تشكوا من آلام فغيرك يرقدون على الاسرة البيضاء و من سنوات، وان فقدت ولدا فغيرك فقد عددا من الأولاد و في حادث واحد.

لا تحزن:

فأنت تشرب الماء الزلال، و تستنشق الهواء الطلق، و تمشي على قدميك معافى، و تنام ليلك آمنا.

#8

شكرا للجميع علي هذا الشرح وعلي تصحيح المعلومات

#9

أسعدني جدا ما قرأت وما فهمت- ولله الحمد - منكم..

شكرا للجميع على هذا الشرح.. وجزاكم المولى خير الجزاء..

تم تعديل هذه المشاركة بواسطة فتاة الثلج في 26 أبريل 2005 في 18:56

هذا الموضوع مغلق.

مواضيع مشابهة