sysmon
sysmon هي دالة عادية، تُرجمت حرفيًا كمراقب النظام، وبعد إزالة التعليقات لا يتجاوز كودها 200 سطر تقريبًا. سيُخصص لها خيط منفصل للبدء خلال مرحلة توجيه البرنامج، وبعد ذلك ستراقب باستمرار في الخلفية حالة برنامج Go أثناء التشغيل، وتتخذ المعالجة المناسبة. يمكن العثور على الكود المتعلق ببدء تشغيلها في دالة runtime.main:
go
func main() {
...
mp := getg().m
mainStarted = true
systemstack(func() {
newm(sysmon, nil, -1)
})
...
}المراقب نفسه مجرد حلقة for، فترة كل دورة هي 20 ميكروثانية، ومع زيادة مؤشر خمول البرنامج، قد تصل الفترة القصوى إلى 10 ميلي ثانية. في كل دورة، تقوم بشكل رئيسي بالأمور التالية:
- مساعدة جدولة الكوروتينات، واستباق الكوروتينات التي تعمل لفترة طويلة
- فحص حالة الذاكرة، وتحديد الحاجة لجمع القمامة
