From 2be6b67d0b85d6563a870bb5160aafd19bc9bc3d Mon Sep 17 00:00:00 2001 From: xfy Date: Thu, 4 Jun 2026 11:14:32 +0800 Subject: [PATCH] fix(server): release MatchResult back to pool after use Add matcher.ReleaseMatchResult(result) in the base handler to prevent sync.Pool object leak. Every Match() call acquires from pool but the caller never returned objects, causing unbounded pool growth. --- internal/server/server.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/server/server.go b/internal/server/server.go index 76ce40d..bfabb2b 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -529,9 +529,10 @@ func (s *Server) startSingleMode() error { result := locationEngine.Match(ctx.Path()) if result != nil && result.Handler != nil { result.Handler(ctx) + matcher.ReleaseMatchResult(result) return } - // 无匹配,返回 404 + matcher.ReleaseMatchResult(result) ctx.SetStatusCode(404) ctx.SetBodyString("Not Found") }