GOMEMLIMIT (Go 1.19+) устанавливает мягкий лимит на общее потребление памяти Go runtime. Когда потребление приближается к лимиту, GC становится агрессивнее - запускается чаще, чтобы не превысить границу.
// Установка: 80% от доступной памяти контейнера
// GOMEMLIMIT=1600MiB (если контейнер 2 GiB)
// Или программно:
import "runtime/debug"
debug.SetMemoryLimit(1600 << 20)
Типичный паттерн для контейнеров: GOGC=100 GOMEMLIMIT=1600MiB - GC работает нормально, но становится агрессивнее при приближении к лимиту контейнера.