كيف تقلل عمل الـ garbage collector في لغة جو ؟

· 288 كلمة · 2 دقيقة قراءة

كيفية تعيين قيمة GOGC 🔗

يمكنك تعيين قيمتها في طرفية (terminal) بهذه الطريقة:

GOGC=200

أو يمكنك تغييرها في ملف yaml الخاص بمتغيرات البيئة عند استخدام Docker أو Kubernetes.

ما هي القيمة الافتراضية لـ GOGC؟ 🔗

القيمة الافتراضية لـ GOGC هي 100 ، مما يعني أن عملية جمع القمامة ستعمل عندما يتضاعف عدد التخصيصات (استهلاك الذاكرة) من عدد التخصيصات السابقة.

ماذا يمكنني أن أفعل لتقليل تأثير الـ garbage collection في Go؟ 🔗

إذا كان برنامج Go الخاص بك يحتوي على مجموعة بيانات ثابتة كبيرة ، فأضبط GOGC على نسبة مئوية أصغر ؛ على سبيل المثال GOGC=50. كلما زاد الرقم ، كلما قل حجم استهلاك الذاكرة (heap memory) ، ولكن كلما زاد استخدام وحدة المعالجة المركزية (CPU).

إذا كان برنامج Go الخاص بك يحتوي على كومة صغيرة وعدد قليل من الـ memory allocations وعمل GC سريع ، فأضبط GOGC على نسبة مئوية أعلى بحيث يحدث الـ garbage collection بشكل أقل تكراراً. وبالتالي ، سيستجيب برنامجك بشكل أسرع وتكون الـ latency أقل. لكنه سيستخدم ذاكرة الوصول العشوائي (RAM) أكثر من الإعداد الافتراضي.

إذا كان برنامجك يعمل لفترة زمنية قصيرة مثل المترجم ، فقد يكون من الجيد إيقاف تشغيل الـ GC . يمكنك إيقاف تشغيل الـ garbage collector بواسطة GOGC=off. وبالتالي ، يعمل البرنامج بشكل أسرع ، ولكن قد يتعطل (ينتهي بسبب استخدام أكثر من ذاكرة الوصول العشوائي المتاحة / المسموح بها). لذلك يوصى بالتحليل والقياس قبل وبعد تغيير قيمة GOGC.

فيما يلي القيم في جدول موجز.

الحالةالإجراءالايجابياتالسلبيات
مجموعة بيانات ثابتة كبيرةGOGC = 50 أو أقلذاكرة RAM أقلاستهلاك أعلى في وحدة المعالجة المركزية (CPU)
بيانات أقل ، GC سريعGOGC = 200 أو أكثرزمن انتظار (latency) أقلاستهلاك عالي من ذاكرة الوصول العشوائي (RAM)
تنفيذ لمرة واحدةGOGC=offيعمل بشكل أسرعقد يتعطل وينهي البرنامج
التصنيفات: برمجة
مشاركة:
waffarx cash back