"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > عد المراجع مقابل تتبع جمع البيانات المهملة

عد المراجع مقابل تتبع جمع البيانات المهملة

تم النشر بتاريخ 2024-11-08
تصفح:466

Reference Counting vs Tracing Garbage Collection

مرحبًا، Mentes Tech!

هل تعرف ما هو حساب المراجع وتتبع المراجع في سياق إلغاء تخصيص الذاكرة؟

يكمن الفرق بين تتبع المرجع (أو تتبع جمع البيانات المهملة) والعد المرجعي (عد المرجع) في النهج الذي تستخدمه كل تقنية لتحديد وتحرير ذاكرة الكائنات التي لا توجد أطول في الاستخدام.
سأشرح كل واحدة منها ثم أسلط الضوء على الاختلافات الرئيسية.

عد المراجع (عد المراجع)

  • كيف يعمل : يحتوي كل كائن في الذاكرة على عداد يتتبع عدد المراجع (أو المؤشرات) التي تشير إليه. عند إنشاء مرجع جديد للكائن، يتم زيادة العداد. عند إزالة مرجع، يتم تقليل العداد. إذا وصل العداد إلى الصفر، فهذا يعني أنه لم يعد من الممكن الوصول إلى الكائن ويمكن تحريره (يمكن طي ذاكرته).

  • المزايا:

    • سهلة الفهم والتنفيذ.
    • يجمع الذاكرة فورًا عندما يصل العداد إلى الصفر، مما قد يقلل من حجم الذاكرة المستخدمة.
  • العيوب:

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

تتبع المراجع (تتبع مجموعة البيانات المهملة)

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

  • المزايا:

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

    • يمكن أن يحدث توقفًا مؤقتًا في تنفيذ البرنامج، على الرغم من أن مجمعات البيانات المهملة الحديثة، مثل Go، مصممة لتقليل هذه التوقفات مؤقتًا.
    • بشكل عام، يمكن أن تكون عملية التتبع أكثر تعقيدًا واستهلاكًا للموارد من حساب المرجع، اعتمادًا على كيفية تنفيذ أداة تجميع البيانات المهملة.

الاختلافات الرئيسية

  1. إدارة الدورة:

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

    • عد المراجع: بسيط، ولكن كل عملية زيادة أو إنقاص يمكن أن تؤثر على الأداء، خاصة في البرامج التي تقوم بالعديد من العمليات باستخدام المؤشرات.
    • التتبع: أكثر تعقيدًا ويمكن أن يسبب توقفًا مؤقتًا في تنفيذ البرنامج، ولكنه بشكل عام أكثر كفاءة في التعامل مع أنماط استخدام الذاكرة المختلفة.
  3. وقت التجميع:

    • العدد المرجعي: يجمع الذاكرة فورًا عندما يصل العدد إلى الصفر.
    • التتبع: يجمع الذاكرة بشكل دوري، عندما يقوم جامع البيانات المهملة بتشغيل دورته.
  4. تطبيق:

    • عدد المراجع: أسهل في التنفيذ، ولكن أقل قوة في التطبيقات المعقدة.
    • التتبع: أكثر قوة، ولكن تنفيذ أداة تجميع البيانات المهملة قد يكون معقدًا للغاية.

باختصار، يعد حساب المرجع أبسط وأكثر إلحاحًا، ولكنه قد يفشل في سيناريوهات معينة (مثل الدورات المرجعية)، في حين أن التتبع أكثر قوة ومرونة، ولكن قد يكون له تأثير أكبر على الأداء بسبب تعقيد عملية التتبع. تطبيق.

بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/devxbr/reference-counting-vs-tracing-garbage-collection-51ac?1 إذا كان هناك أي انتهاك، فيرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3