From 2fc8b7b788ae3b5a83829e2eda68ed0b12745e93 Mon Sep 17 00:00:00 2001 From: Denis Isaev Date: Mon, 23 Sep 2019 21:40:27 +0300 Subject: [PATCH] Drop memory usage of go/analysis linters 5x Set analysis pass results to nil early to garbage collect them soon. Memory can be reduced for the following linters: - staticcheck - stylecheck - gosimple - govet - bodyclose - any future go/analysis linter Relates: #712, #634, #628, #598, #509, #483, #337 --- pkg/golinters/goanalysis/runner.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/pkg/golinters/goanalysis/runner.go b/pkg/golinters/goanalysis/runner.go index f3850ab8a766..4dee44c86c9a 100644 --- a/pkg/golinters/goanalysis/runner.go +++ b/pkg/golinters/goanalysis/runner.go @@ -872,6 +872,13 @@ func (lp *loadingPackage) decUse() { pass.ImportPackageFact = nil pass.ExportPackageFact = nil act.pass = nil + act.deps = nil + if act.result != nil { + if isMemoryDebug { + debugf("%s: decUse: nilling act result of size %d bytes", act, sizeOfValueTreeBytes(act.result)) + } + act.result = nil + } } lp.pkg.Syntax = nil @@ -899,13 +906,6 @@ func (lp *loadingPackage) decUse() { } act.packageFacts = nil act.objectFacts = nil - act.deps = nil - if act.result != nil { - if isMemoryDebug { - debugf("%s: decUse: nilling act result of size %d bytes", act, sizeOfValueTreeBytes(act.result)) - } - act.result = nil - } } lp.actions = nil }