diff --git a/internal/platform/httpx/limits.go b/internal/platform/httpx/limits.go index a119705..eb56fe5 100644 --- a/internal/platform/httpx/limits.go +++ b/internal/platform/httpx/limits.go @@ -63,14 +63,15 @@ func (rl *RateLimiter) Allow(key string) bool { sw.mu.Lock() defer sw.mu.Unlock() - // Remove expired tokens - var valid []time.Time + // Remove expired tokens using in-place filtering to avoid GC pressure. + n := 0 for _, t := range sw.tokens { if t.After(cutoff) { - valid = append(valid, t) + sw.tokens[n] = t + n++ } } - sw.tokens = valid + sw.tokens = sw.tokens[:n] if len(sw.tokens) >= rl.limit { return false