‫مرحبا بعودتك.
‫في هذا الفيديو ، أود أن أتحدث عن جامع القمامة وكيف يعتني C-sharp بالذاكرة.
‫لذا فإن مجموعة البيانات المهملة هي أداة متوفرة بلغات برمجة متعددة.
‫وفي بعضها يتم ذلك يدويًا والبعض الآخر يتم تلقائيًا.
‫ويوفر إطار عمل الشبكة إدارة تلقائية للذاكرة ، مما يعني أنك لست مضطرًا إلى استخدام
‫أداة تجميع البيانات المهملة يدويًا كما تفعل في جميع لغات البرمجة.
‫لذا ، فإن لغات البرمجة مثل C أو C ++ وغيرها ، لديها مجموعة يدوية لجمع القمامة يجب عليك تشغيلها بين الحين
‫والآخر وعليك أن تعرف متى يتعين عليك تشغيلها.
‫هذا شيء يتم إجراؤه تلقائيًا في متجر C.
‫هذا هو السبب في أنه ليس شيئًا يستخدمه الكثير من الناس كثيرًا.
‫لذلك بمجرد أن يكون لديك برامج أكثر تعقيدًا ومتقدمة حقًا ، ستبدأ في استخدامها بين الحين والآخر.
‫لكنه في الحقيقة ليس شيئًا يجب عليك استخدامه طوال الوقت أو حتى يجب عليك استخدامه على الإطلاق في معظم الحالات.
‫لذلك هذا هو السبب في أنه ليس موضوعًا رئيسيًا ، إذا جاز التعبير.
‫حسنا.
‫لنفترض أن لدينا هذا الكائن المسمى Dennis وهو من النوع البشري.
‫لذلك قمت بإنشاء فئة تسمى الإنسان وهناك العديد من الخصائص المختلفة وما إلى ذلك.
‫لذا في النهاية ، أنا فقط أقوم بإنشاء كائن من النوع البشري ، وهذا يسمى دينيس.
‫ومن خلال القيام بذلك ، باستخدام هذه الكلمة الأساسية الجديدة ، أحتاج إلى ذاكرة لأنها تخلق شيئًا في ذاكرتي.
‫لذا فإن C Sharp تخصص لنا ذاكرة ويهتم الإطار باستعادة الذاكرة لاستخدامها في النظام
‫بمجرد توقف استخدام الكائنات.
‫إذن في هذه الحالة ، أقوم بإنشاء هذا الكائن ومن ثم قد أستخدمه وقد أستخدمه مرارًا وتكرارًا.
‫لكن في وقت ما لن أستخدمه بعد الآن وربما أقطع الإشارات إليه.
‫وبعد ذلك ، نعم ، سيقوم جامع القمامة بتنظيفه لأن هذه الذاكرة محجوبة الآن ويجب على جامع
‫القمامة التنظيف.
‫لذلك يجب أن تجعل هذه الذاكرة متاحة مرة أخرى لكائنات أخرى ، على سبيل المثال.
‫الآن دعونا ننظر إليها من منظور بصري.
‫لذلك لدينا تجمع ذاكرة النظام هذا على الجانب الأيسر وبرنامجنا على الجانب الأيمن.
‫ويحتوي تجمع ذاكرة النظام على مجموعة من الذاكرة ، لذا يمكننا استخدام هذه الذاكرة لبرامج مختلفة
‫متعددة.
‫لكن الآن لدينا برنامجنا الذي يديره ، والآن في برنامجنا نقوم بإنشاء كائن.
‫الآن ، فجأة نحتاج إلى مساحة صغيرة في ذاكرتنا.
‫حسنا.
‫إذن هناك إشارة من برنامجنا إلى تلك الذاكرة حيث يتم تخزين كائننا.
‫حسنا.
‫لذلك هناك مرجع مباشر ويمكننا إعادة استخدامه ويمكننا تسميته من أماكن مختلفة وما إلى ذلك.
‫حسنا.
‫ثم لدينا واحد وآخر.
‫لذلك لدينا عدة أشياء مختلفة أنشأناها.
‫وفي كل مرة نقوم بإنشاء كائن جديد ، توجد ذاكرة مخصصة في تجمع الذاكرة وهناك إشارة
‫من برنامجنا إلى تلك الذاكرة.
‫إذن هذه المراجع موجودة.
‫إذن هناك إشارة من برنامجنا إلى تجمع الذاكرة.
‫الآن قد يتم حذف المرجع في وقت ما.
‫لذلك ربما نحذف المرجع عن طريق تعيين متغير فارغ أو عن طريق تعيين الكائن فارغًا ، ثم
‫يختفي المرجع فجأة.
‫الآن لا توجد إشارة من برنامجنا إلى هذا التخصيص الصغير للذاكرة هنا بعد الآن.
‫لذلك لاحظ جامع القمامة هذا الأمر وقال ، حسنًا ، لا يوجد مرجع ، لذلك لا يتم استخدام
‫هذه القطعة الصغيرة من الذاكرة أبدًا ، لذلك دعونا فقط ننظفها أو نعيد تخصيصها أو دعونا نحررها لتخصيصات
‫أخرى.
‫وهذا ما يحدث بعد ذلك.
‫الآن دعونا نلقي نظرة على مثال على وقت بدء برنامج جمع القمامة.
‫ولدي وظيفة هنا تسمى وظيفتي ، وأنا أقوم بإنشاء كائن هنا.
‫مرة أخرى ، إنه يسمى دينيس.
‫ثم يسمي دينيس أساليبه ، أو نطلق عليه أساليبه مثل التدريس.
‫ثم نحدد عمره ثم نسميه طريقة أخرى ، كبر السن وهكذا دواليك.
‫ولكن في مرحلة ما ، لم يعد كائن Dennis هذا في الذاكرة مطلوبًا بعد الآن لأن استدعاء الوظيفة قد
‫انتهى.
‫لذا فإن الوظيفة تنهي الكائن.
‫يخرج دينيس عن النطاق ولا توجد إشارات إلى دينيس بعد الآن لأن وظيفتي هي وظيفة ولدينا
‫هذا الكائن داخل وظيفة ، وبالتالي فإن نطاقها يقع داخل الوظيفة.
‫لذا بمجرد انتهاء استدعاء الوظيفة ، لا يوجد مرجع مباشر لها بعد الآن لأننا لا نستطيع
‫الإشارة إلى كائن داخل دالة من خارج هذه الدالة.
‫الصحيح.
‫لذلك سنحتاج إلى إنشاء حقول لذلك أو القيام بمناهج أخرى لذلك.
‫لكن في النهاية ، يقوم جامع القمامة ، بتنظيف دينيس وإعادة تخصيص هذه الذاكرة.
‫والفكرة العامة هنا أن هذا مجرد مثال واحد بسيط.
‫هناك الكثير من المواقف الأخرى التي يبدأ فيها جامع القمامة ، ولكن هذا شيء استخدمناه
‫بالفعل.
‫إذن المفاهيم التي يمكنك رؤيتها هنا ، رأيناها بالفعل في مقاطع فيديو أو محاضرات أخرى لهذه
‫الدورة.
‫لهذا اخترت هذا المثال.
‫إذن ماذا تريد أن تعرف عن جمع القمامة؟
‫حسنًا ، ليس عليك الاتصال بمجمع القمامة يدويًا ، لكن يمكنك ذلك ، لذا يمكنك القيام بذلك يدويًا.
‫يتطلب جامع القمامة قوة معالجة ، لذا فهو على خيط منفصل وخفيف الوزن للغاية.
‫ولكن لا تزال هناك حاجة إلى بعض قوة المعالجة.
‫هدف جامعي القمامة هو تحرير الذاكرة ولكن لا تستخدم الكثير من طاقة المعالجة.
‫لذلك لن تحتاج إلى قدر كبير من قوة المعالجة بشكل عام ، ولكن لن يتم استدعاؤها طوال الوقت أو لن يعمل
‫برنامج تجميع البيانات المهملة طوال الوقت لتحرير الذاكرة.
‫سيتم تشغيلها فقط عندما يكون ذلك ضروريًا أو عندما تراه ضروريًا ، عندما تعتقد أنه ضروري.
‫هذا هو الجزء الصعب حقًا هنا.
‫لا يتم بالضرورة استعادة الذاكرة على الفور.
‫قد يستغرق الأمر بعض الوقت لمجمع القمامة ، حتى لو اتصلت به يدويًا ، فلن يضطر إلى العمل
‫على الفور.
‫هذه بعض الأشياء الصعبة حول جامع القمامة.
‫يمكنك تنفيذ طريقة نهائية لتنفيذ التعليمات البرمجية قبل تحرير كائن من الذاكرة بواسطة جامع
‫البيانات المهملة.
‫هذا يعني أنك إذا قررت تشغيل رمز معين قبل تنظيف كائن ما ، فقبل أن يقوم برنامج تجميع البيانات المهملة
‫بتنظيفه.
‫لذلك بمجرد عدم وجود أي إشارات إليه بعد الآن ، على سبيل المثال ، يمكنك استخدام طريقة الليزر النهائية
‫ضمن هذه الفئة من أجل تنفيذ الوظيفة المحددة التي تريد تشغيلها.
‫ربما ترغب في تنظيف الأشياء بنفسك قبل دخول أداة تجميع القمامة وتنظيف الكائن
‫الخاص بك أو نقل الذاكرة أو تحريرها إلى هذا الكائن من الذاكرة.
‫حسنا.
‫متى يتم تشغيل جامع القمامة؟
‫حسنًا ، عندما يكون لدى النظام ذاكرة فعلية منخفضة ، عندما تتجاوز الذاكرة المخصصة حدًا
‫محددًا مسبقًا ، عندما يتم استدعاء طريقة تجميع أو تجميع القمامة ، على الرغم من أن هذه طريقة صعبة للغاية.
‫لذلك هذا شيء.
‫نعم ، محدد جدًا ، مميز جدًا.
‫إذا كنت تريد معرفة المزيد عنها ، فيجب عليك التحقق من الوثائق الموجودة على أداة تجميع القمامة.
‫لكن طريقة تجميع النقاط لا يتم استدعاؤها دائمًا على الفور ولا تقوم بتنظيف كل شيء بشكل مباشر.
‫يبدو الأمر كما لو كنت تقدم اقتراحًا للأداة ، لذا فأنت تقول ، حسنًا ، جامع القمامة.
‫أنا شخصياً أعتقد أن هذه ستكون نقطة جيدة أو مكانًا جيدًا لجمع القمامة ، ولكن في بعض الحالات
‫قد لا تقبلها أو قد تفعلها لاحقًا أو شيء من هذا القبيل.
‫ربما قامت فقط بجمع القمامة وتقرر أنها ليست ضرورية أو شيء من هذا القبيل.
‫لذا فهي صعبة للغاية.
‫إذا كنت تريد معرفة المزيد عنها ، تحقق من الوثائق.
‫لكنني أعتقد أن هذه نقطة بداية جيدة لفهم ما يفعله جامع القمامة.
‫وكما قلت ، في معظم الحالات لن تحتاجها لأننا في الوقت الحاضر لدينا الكثير من الذاكرة.
‫وإذا لم يكن لديك تسرب كبير للذاكرة في برامجك ، فلن تواجه هذه المشكلات مطلقًا.