Lập trình Go 22/09/2026 6 phút

Stop-the-world trong Go: GC còn dừng chương trình ở đâu, và bao lâu

GC Go dừng toàn bộ chương trình ở đúng hai điểm mỗi chu kỳ để chuyển pha an toàn. Đo thật: STW chỉ vài chục tới vài trăm micro-giây, tăng nhẹ từ 39 us (100 goroutine) lên 161 us (100k) nhưng luôn dưới 1 ms kể cả nửa triệu goroutine. Vì sao vẫn cần STW và điều gì làm nó dài ra. Go 1.23.

Lập trình Go 22/09/2026 6 phút

Giảm áp lực GC thực chiến: gộp mọi kỹ thuật, cắt GC 4 lần

Giảm áp lực GC không phải một mẹo mà là gộp nhiều kỹ thuật. Đo thật cùng tác vụ: tái dùng strings.Builder + Grow prealloc + tránh fmt.Sprintf boxing cắt cấp phát từ 2756 xuống 901 alloc mỗi lần, làm GC chạy 511 thay vì 2068 lần và nhanh 4.2 lần. Quy trình thực chiến đo-tìm-sửa-đo lại. Go 1.23.

Lập trình Go 22/09/2026 6 phút

Finalizer trong Go: vì sao runtime.SetFinalizer là công cụ nguy hiểm, đo thật cạm bẫy

SetFinalizer đăng ký hàm chạy khi object thành rác, nghe tiện để dọn tài nguyên nhưng đầy cạm bẫy. Đo thật: finalizer chỉ chạy sau GC (0 trước), bất đồng bộ (9998/10000), giữ object sống thêm một chu kỳ GC (19MB vs 0MB), và KHÔNG chạy nếu chương trình thoát trước GC. Go 1.23.