diff --git a/experimental/libbox/memory.go b/experimental/libbox/memory.go index 173eaf7d..b3c72570 100644 --- a/experimental/libbox/memory.go +++ b/experimental/libbox/memory.go @@ -1,18 +1,22 @@ -//go:build darwin - package libbox import ( + "math" runtimeDebug "runtime/debug" "github.com/sagernet/sing-box/common/dialer/conntrack" ) -const memoryLimit = 30 * 1024 * 1024 - -func SetMemoryLimit() { - runtimeDebug.SetGCPercent(10) - runtimeDebug.SetMemoryLimit(memoryLimit) - conntrack.KillerEnabled = true - conntrack.MemoryLimit = memoryLimit +func SetMemoryLimit(enabled bool) { + const memoryLimit = 30 * 1024 * 1024 + if enabled { + runtimeDebug.SetGCPercent(10) + runtimeDebug.SetMemoryLimit(memoryLimit) + conntrack.KillerEnabled = true + conntrack.MemoryLimit = memoryLimit + } else { + runtimeDebug.SetGCPercent(100) + runtimeDebug.SetMemoryLimit(math.MaxInt64) + conntrack.KillerEnabled = false + } }