123456789101112131415161718192021222324252627 |
- package libbox
- import (
- "math"
- runtimeDebug "runtime/debug"
- "github.com/sagernet/sing-box/common/conntrack"
- )
- var tracker *conntrack.DefaultTracker
- func SetMemoryLimit(enabled bool) {
- if tracker != nil {
- tracker.Close()
- }
- const memoryLimit = 45 * 1024 * 1024
- const memoryLimitGo = memoryLimit / 1.5
- if enabled {
- runtimeDebug.SetGCPercent(10)
- runtimeDebug.SetMemoryLimit(memoryLimitGo)
- tracker = conntrack.NewDefaultTracker(true, memoryLimit)
- } else {
- runtimeDebug.SetGCPercent(100)
- runtimeDebug.SetMemoryLimit(math.MaxInt64)
- tracker = conntrack.NewDefaultTracker(false, 0)
- }
- }
|