freeCodeCamp/guide/arabic/csharp/garbage-collection/index.md

5.3 KiB

title localeTitle
Garbage Collection جمع القمامة

جمع القمامة

ما هو جمع القمامة؟

جمع البيانات المهملة عبارة عن عملية تحاول البرامج من خلالها تحرير مساحة ذاكرة لم تعد مستخدمة بواسطة الكائنات. يتم تنفيذ جمع القمامة بشكل مختلف لكل لغة. تحتوي معظم لغات البرمجة عالية المستوى على نوع من تجميع البيانات المهملة المضمنة. قد تضيف لغات البرمجة ذات المستوى المنخفض المجموعة المهملة عبر المكتبات.

كما ذكر أعلاه ، فإن كل لغة برمجة لها طريقتها الخاصة في GC. في برمجة C ، يحتاج المطورون إلى رعاية تخصيص الذاكرة dealloc() تخصيصها باستخدام وظائف malloc() و dealloc() . بالنسبة لتطبيقات C # ، لم يعد المطورين بحاجة إلى رعاية GC ولا ينصح به أيضًا لأن .NET framework يعالج هذا بالفعل.

#### كيف يتم تخصيص الذاكرة؟ في C # ، يحدث تخصيص الذاكرة للكائنات في كومة تتم إدارتها ويتم العناية بها بواسطة CLR (وقت تشغيل اللغة العام). يتم تخصيص الذاكرة من خلال win32.dll في نظام التشغيل (OS) مثلما هو الحال في C. ولكن في C ، يتم وضع الكائنات في الذاكرة في أي مكان يناسب المساحة الحرة حجم الكائن. ويعمل تخطيط الذاكرة على أساس مفاهيم Linkedlist. في C # ، يتم تخصيص الذاكرة من أجل الكومة بطريقة خطية ، أي واحد تلو الآخر.

كلما تم إنشاء كائن جديد ، يتم تخصيص ذاكرة في كومة الذاكرة المؤقتة ثم ينتقل المؤشر إلى عنوان الذاكرة التالي. تخصيص الذاكرة في C # هو أسرع من C. في C يحتاج الذاكرة للبحث والتخصيص للكائن الذي يضيف بعض الوقت الزائد.

#### Generations في C # GC في برمجة .net ، تحتوي الكومة على ثلاثة أجيال تسمى Generation 0، 1، 2.

يتم ملء الجيل 0 أولاً عند إنشاء كائن جديد. جامع القمامة تشغيل عندما تحصل على شغل الجيل 0. يتم إنشاء الكائنات المنشأة حديثًا في الجيل 0. أثناء أداء مجموعة البيانات المهملة يتم إتلاف كافة الكائنات غير المرغوب فيها ، ويتم تحرير الذاكرة وضغطها. يهتم GC بالإشارة إلى مؤشرات الذاكرة المحررة بمجرد حدوث GC.

الأجيال 1 و 2 لديها الكائن الذي لديه حياة أطول. لن يحدث GC على الأجيال 1 و 2 حتى يكون لدى الأجيال 0 ذاكرة كافية لتخصيص.

من غير المستحسن لاستدعاء GC بشكل برمجي. من الجيد أن يحدث ذلك من تلقاء نفسه. يتم تنفيذ GC عندما يتم ملء الجيل 0. GC لا يؤثر على أداء التطبيق.

جمع البيانات المهملة هي العملية التي تحاول البرامج من خلالها تحرير مساحة ذاكرة لم تعد مستخدمة من قبل المتغيرات ، والكائنات ، ومثلها. يتم تنفيذ جمع القمامة بشكل مختلف لكل لغة. تحتوي معظم لغات البرمجة عالية المستوى على نوع من تجميع البيانات المهملة المضمنة. قد تضيف لغات البرمجة منخفضة المستوى مجموعة البيانات المهملة عبر المكتبات.

جمع القمامة هو أداة توفر الوقت للمبرمج ، على سبيل المثال أنه يستبدل الحاجة لوظائف مثل malloc () و free () التي توجد في C. ويمكن أن يساعد أيضًا في منع تسرب الذاكرة.

الجانب السلبي لجمع القمامة هو أنه يؤثر سلبًا على الأداء. يجب أن يعمل البرنامج بانتظام من خلال البرنامج ، وفحص مراجع الكائنات وتنظيف الذاكرة - وهذا يأخذ الموارد ويحتاج في كثير من الأحيان إلى توقف البرنامج.

إذا كان الكائن لا يحتوي على مراجع (لم يعد قابلاً للوصول) ، فهو مؤهل لجمع البيانات المهملة. على سبيل المثال ، في رمز Java الموجود أدناه ، يحتوي كائن Thing الذي تمت الإشارة إليه أصلاً بواسطة 'thing1' على مرجع واحد ومرجع فقط إلى كائن آخر على الكومة - ثم يتعذر الوصول إليه وسيتوفر ذاكرة غير مخصصة من قبل أداة تجميع مجمعي البيانات المهملة.

معلومات اكثر:

- + - https://docs.microsoft.com/en-us/dotnet/standard/garbage-collection/fundamentals - لمعرفة المزيد حول مجموعة البيانات المهملة