جمع القمامة في جافا: كل ما تريد معرفته

تمنحك هذه المقالة حول جمع القمامة في جافا فكرة واضحة حول كيفية عملها وأنواعها وطرق مختلفة ضمن جمع القمامة في جافا

هي لغة برمجة للأغراض العامة ، وإذا توصلت إلى موقف توجد فيه بيانات غير مستخدمة في برنامجك ولا تعرف كيفية التعامل معها ، فإن Garbage Collection في Java تكون مفيدة. لذلك ، أكتب هذا المقال لمساعدتك في التعامل مع هذه الوظائف.

سأغطي الموضوعات بالترتيب التالي:





هيا بنا نبدأ!

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

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



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

كيفية منع الجمود في جافا
  • يمكن أن تنكسر البرامج التي لا تقوم بإلغاء تخصيص الذاكرة في النهاية عند عدم وجود ذاكرة متبقية في النظام لتخصيصها. يقال إن كل هذه البرامج بها تسرب للذاكرة.
  • يحدث جمع البيانات المهملة في Java تلقائيًا أثناء عمر البرنامج ، مما يلغي الحاجة إلى إلغاء تخصيص الذاكرة وبالتالي تجنب تسرب الذاكرة.
  • طرق مثل مجانا() في C و حذف() في C ++ ، ولكن في Java ، يتم تنفيذها تلقائيًا. وبالتالي، يوفر إدارة أفضل للذاكرة.

الآن ، دعنا نفهم كيف تعمل مجموعة القمامة التلقائية هذه في جافا.

ملحوظة : يُقال أن الكائن مؤهل لجمع البيانات المهملة إذا كان يتعذر الوصول إليه.



كيف يعمل جمع القمامة؟

جمع القمامة هي عملية العمل مع ذاكرة الكومة وأيضًا علامة أو تحديد الأشياء التي لا يمكن الوصول إليها وتدميرها بالضغط.

تعتبر عملية جمع البيانات المهملة في Java عملية تلقائية ولا يتعين على المبرمج وضع علامة صريحة على الكائنات المراد حذفها. تنفيذ يعيش بشكل رئيسي في . يمكن لكل JVM تنفيذ جمع القمامة. الشرط الوحيد هو أنه يجب أن يفي بمواصفات JVM.

على الرغم من توفر العديد من JVMs ، أوراكل هوت سبوت هي الأكثر شيوعًا إلى حد بعيد لأنها توفر مجموعة قوية وناضجة من خيارات جمع القمامة.

  • يحتوي HotSpot على العديد من جامعي القمامة التي تم تحسينها لحالات الاستخدام المختلفة ، ويتبع كل جامعي القمامة نفس العملية الأساسية.
  • في الخطوة الأولى ، كائنات غير مرجعية يتم تحديدها وتمييزها على أنها جاهزة لجمع القمامة.
  • في الخطوة الثانية ، يتم حذف الكائنات المحددة. اختياريًا ، يمكن ضغط الذاكرة بعد أن يحذف جامع البيانات المهملة الكائنات ، بحيث تكون الكائنات المتبقية في كتلة متجاورة في بداية الكومة. تجعل عملية الضغط من السهل تخصيص الذاكرة للكائنات الجديدة بالتتابع بعد كتلة الذاكرة المخصصة للكائنات الموجودة.

تطبق كل جامعي القمامة في HotSpot إستراتيجية تجميع للأجيال تصنف الكائنات حسب العمر. الأساس المنطقي وراء جمع القمامة بين الأجيال هو أن معظم الكائنات قصيرة العمر وستكون جاهزة لجمع القمامة بعد وقت قصير من إنشائها.

الآن دعونا نرى ما هي الأنواع المختلفة من جامعي القمامة.

أنواع جامع القمامة

يوفر JVM أربعة جامعي قمامة مختلفين ، كلهم ​​من الأجيال. كل واحد له مزاياه وقيوده. يقع اختيار جامع القمامة الذي يجب استخدامه على عاتق المستخدم ويمكن أن يكون هناك اختلافات عديدة في الإنتاجية والتوقف المؤقت للتطبيق.

هناك 4 أنواع من جامعي القمامة.

إنشاء حزمة في جافا
  • جامع القمامة التسلسلي (GC) :يتم إجراء جميع أحداث جمع القمامة بشكل متسلسل في سلسلة واحدة. يتم تنفيذ الضغط بعد كل مجموعة قمامة.
  • موازية / صبيب GC: يتم استخدام خيوط متعددة لجمع القمامة الصغيرة / الصغيرة. يتم استخدام خيط واحد لجمع القمامة الرئيسية وضغط الجيل القديم. أيضًا ، يستخدم المتغير المتوازي خيوط متعددة لجمع القمامة الرئيسية وضغط الجيل القديم.
  • جامع CMS :يتم استخدام خيوط متعددة لجمع القمامة الصغيرة / الصغيرة باستخدام نفس الخوارزمية مثل Parallel. غالبية مجموعات البيانات المهملة متعددة الخيوط ، ولكن CMS تعمل بشكل متزامن مع عمليات التطبيق لتقليل أحداث التطبيق. لا يتم إجراء ضغط.
  • جامع G1 :تم تصميم أداة تجميع القمامة هذه بشكل أساسي كبديل لنظام إدارة المحتوى. إنه متوازي ومتزامن مثل CMS ، لكنه يعمل بشكل مختلف تمامًا عند مقارنته بجامعي القمامة الأقدم.

دعونا نفهم مزايا جمع البيانات المهملة في جافا.

مزايا

  • أكبر فائدة لجمع القمامة في Java هي أنه تلقائيًا يعالج الحذف من الكائنات غير المستخدمة أو بعض الكائنات التي يتعذر الوصول إليها لتحرير موارد الذاكرة.
  • جمع القمامة هو الآن مكون قياسي جديد للعديد من لغات البرمجة الشائعة.
  • يجعل جافا الذاكرة فعالة. وذلك لأن أداة تجميع البيانات المهملة تزيل الكائنات غير المرجعية من ذاكرة الكومة.
  • أنه يتم تلقائيًا بواسطة جامع القمامة الذي يعد جزءًا من JVM.

أفضل الممارسات

أفضل طريقة للتكيف مع مجموعة Java المهملة هي عن طريق وضع العلامات على JVM. الأعلام لديها القدرة على ضبط جامع القمامة لاستخدامه. يساعد في جعله الأنسب لمعالجة الخلفية حيث تكون فترات التوقف الطويلة لجمع القمامة مقبولة.

شيء آخر يجب ملاحظته هنا هو أن أداة تجميع القمامة CMS مصممة لتقليل فترات التوقف المؤقت مما يجعلها مثالية لتطبيقات واجهة المستخدم الرسومية حيث تكون الاستجابة مهمة للغاية. يمكن إجراء ضبط دقيق إضافي عن طريق تغيير حجم الكومة أو أقسامها وقياس كفاءة جمع القمامة.

دعونا نلقي نظرة على هذا البرنامج.

فئة Edureka {int a int b public void setData (int c، int d) {a = cb = d} public void showData () {System.out.println ('Value of a =' + a) System.out.println ('Value of b =' + b)} public static void main (String args []) {Edureka e1 = new Edureka () Edureka e2 = new Edureka () e1.setData (1،2) e2.setData (3، 4) e1.showData () e2.showData () // Edureka e3 // e3 = e2 //e3.showData () // e2 = null //e3.showData () // e3 = null //e3.showData () // e3 = null //e3.showData ()}}

في هذه الحالة ، الاثنانيتم إنشاء كائنات ومتغيرين مرجعيين. إذا أضفت أمرًا آخر e3 = Null ،سيشير متغيرين مرجعيين إلى نفس الكائن. وفي حالة عدم وجود مرجع للمتغير ، e3 = e2e3.showData () في هذه المرحلة ، لا توجد مراجع تشير إلى الكائن ويصبح مؤهلاً لجمع البيانات المهملة.

يقودنا هذا إلى نهاية مقالة 'Garbage Collection in Java' هذه. لقد تعلمنا كيفية إزالة الكائنات غير المستخدمة في الكومة وأنواع المجموعات المختلفة.

إذا وجدت هذه المقالة عن 'Garbage Collection in Java' ، فراجع ملف من Edureka ، وهي شركة تعليمية موثوقة عبر الإنترنت مع شبكة تضم أكثر من 250000 متعلم راضٍ منتشرين في جميع أنحاء العالم. نحن هنا لمساعدتك في كل خطوة في رحلتك ، لقد توصلنا إلى منهج مصمم للطلاب والمهنيين الذين يرغبون في أن يصبحوا مطور جافا.

لديك سؤال لنا؟ يرجى ذكرها في قسم التعليقات في 'Garbage Collection in Java' ' وسنعاود الاتصال بك في أقرب وقت ممكن.