Shenandoah وZGC هما جامعتان متقدمتان لجمع البيانات المهملة تم تصميمهما لتوفير جمع البيانات المهملة بكفاءة وزمن وصول منخفض لتطبيقات Java. فيما يلي بعض الفوائد الرئيسية لاستخدام هؤلاء المجمعين:
شيناندواه جي سي:
1. أوقات الإيقاف المؤقت المنخفضة : تم تصميم Shenandoah GC لتقليل أوقات الإيقاف المؤقت عن طريق تنفيذ معظم أعمال جمع البيانات المهملة بشكل متزامن مع التطبيق. يضمن هذا أن يظل التطبيق مستجيبًا ويعمل بشكل جيد حتى في ظل الاستخدام الكثيف للذاكرة[1][3].
2. الضغط المتزامن: يقوم Shenandoah GC بإجراء ضغط متزامن، مما يعني أنه يقوم بضغط الكومة أثناء تشغيل التطبيق. وهذا يقلل من الحاجة إلى التوقف المؤقت الكامل لجمع البيانات المهملة ويضمن بقاء الكومة مضغوطة وفعالة[1][3].
3. مستقل عن حجم الكومة: أوقات الإيقاف المؤقت لـ Shenandoah GC مستقلة عن حجم الكومة. وهذا يعني أنه يمكنه التعامل مع أكوام كبيرة من دون توقفات كبيرة، مما يجعله مناسبًا للتطبيقات التي تتطلب تخصيصات كبيرة للذاكرة[1][3].
4. الإنتاجية العالية: تم تصميم Shenandoah GC لتوفير إنتاجية عالية عن طريق تقليل الوقت المستغرق في جمع البيانات المهملة. وهذا يضمن أن التطبيق يمكن أن يستمر في العمل بكفاءة حتى في ظل الاستخدام الكثيف للذاكرة[1][3].
زي جي سي:
1. زمن الوصول المنخفض: تم تصميم ZGC لتوفير زمن وصول منخفض للغاية عن طريق تقليل الوقت المستغرق في جمع البيانات المهملة. ويحقق ذلك من خلال تنفيذ معظم أعمال جمع البيانات المهملة بشكل متزامن مع التطبيق وباستخدام نهج يعتمد على المنطقة من جيل واحد[2].
2. NUMA-Aware : تم تصميم ZGC لتكون مدركة لـ NUMA، مما يعني أنها تستطيع التعامل بكفاءة مع الأكوام الكبيرة ونوى وحدة المعالجة المركزية المتعددة. وهذا يضمن أن جامع البيانات المهملة يمكنه الاستفادة من موارد الأجهزة المتاحة[2].
3. الإنتاجية العالية: تم تصميم ZGC لتوفير إنتاجية عالية عن طريق تقليل الوقت المستغرق في جمع البيانات المهملة. وهذا يضمن أن التطبيق يمكن أن يستمر في العمل بكفاءة حتى في ظل الاستخدام الكثيف للذاكرة[2].
4. الميزة التجريبية: ZGC هي ميزة تجريبية تتطلب خيارات سطر أوامر محددة لتمكينها. إنها مناسبة للتطبيقات التي تتطلب فترات توقف قصيرة جدًا ويمكنها التعامل مع عمليات تخصيص الذاكرة الكبيرة[2].
باختصار، تم تصميم كل من Shenandoah وZGC لتوفير زمن وصول منخفض وجمع البيانات المهملة بكفاءة لتطبيقات Java. إنها مناسبة للتطبيقات التي تتطلب إنتاجية عالية ويمكنها التعامل مع عمليات تخصيص الذاكرة الكبيرة.
الاستشهادات:[1] https://clojure-goes-fast.com/blog/shenandoah-in-production/
[2] https://developers.redhat.com/articles/2021/11/02/how-choose-best-java-garbage-collector
[3] https://www.reddit.com/r/feedthebeast/comments/r24zg4/upgrade_your_Java_to_one_that_has_the_shenandoah/
[4] https://stackoverflow.com/questions/64252590/how-does-clr-gc-compare-to-latest-zgc-and-shenandoah-gc-on-jvm
[5] https://www.uber.com/blog/jvm-tuning-garbage-collection/