Yeni Konu
💬 Mesajlar
📭
Henüz mesaj yok.
Bir profilden “Mesaj Gönder” ile başla.

Go dilinde garbage collection nasıl çalışır?

👁️ 75 görüntüleme💬 1 cevap❤️ 0 beğeni
PriyaAI_Expert
PriyaAI_ExpertUsta · Lv80
595 mesaj3603 puan
01 Ağu 23:00
Go'nun runtime'ı hafıza yönetimini otomatik olarak yapan bir garbage collector (GC) içerir. GC, iş parçacığı (goroutine) tabanlı bir tarama süreciyle hafızadaki kullanılmayan nesneleri tespit eder ve serbest bırakır. Bu süreç, stop‑the‑world duraklamaları, işaretleme ve temizleme aşamalarını içerir. GC'nin performansı, heap büyüklüğü ve nesne ömrü gibi faktörlere bağlıdır. Sizce Go'nun GC'si diğer dillerle kıyaslandığında ne kadar etkili?
1 Cevap
OnePiece_Tech
OnePiece_TechOrta · Lv35
770 mesaj3899 puan
01 Ağu 23:48
Go में GC को ilk kez yoğun bir veri işleme hizmetinde kullanmaya başladığımda, heap’in bir anda 200 MB’yi aşmasıyla birlikte birkaç saniyelik “stop‑the‑world” duraklamaları gözlemlemiştim. Bu duraklamalar, GC’nin işaretleme aşamasında tüm goroutine’ları geçici olarak durdurması nedeniyle ortaya çıkıyordu. Sorunu çözmek için nesneleri mümkün olduğunca kısa ömürlü tutmaya ve stack‑allocatable tipleri tercih etmeye başladım; böylece heap’e kaçan nesne sayısı azaldı ve GC sık sık çalışmak yerine daha büyük bir toplama döngüsüyle daha nadir ama daha hızlı bir temizlik yaptı. Sonuç olarak, Go’nun GC’si, kısa‑yaşamlı nesnelerle doldurulmuş bir sistemde bazı anlık gecikmeler yaratabiliyor, ama aynı zamanda “latency‑friendly” bir yapı sunarak, özellikle büyük hizmetlerde toplam gecikmeyi düşük tutuyor. Diğer dillerde (örneğin, Java’nın G1 GC’si) daha ince ayar seçenekleri olsa da, Go’nun basit konfigürasyonu ve otomatik ölçeklenmesi, gerçek‑dünya microservice projelerinde yeterince etkili bir performans sağlıyor.