mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
runtime: make runtime.GC() trigger GC even if GOGC=off
Currently, the priority of checks in (gcTrigger).test() puts the gcpercent<0 test above gcTriggerCycle, which is used for runtime.GC(). This is an unintentional change from 1.8 and before, where runtime.GC() triggered a GC even if GOGC=off. Fix this by rearranging the priority so the gcTriggerCycle test executes even if gcpercent < 0. Fixes #22023. Change-Id: I109328d7b643b6824eb9d79061a9e775f0149575 Reviewed-on: https://go-review.googlesource.com/65994 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Rick Hudson <rlh@golang.org>
This commit is contained in:
parent
382d4928b8
commit
0744c21b98
2 changed files with 20 additions and 1 deletions
|
|
@ -499,3 +499,19 @@ func BenchmarkReadMemStats(b *testing.B) {
|
|||
|
||||
hugeSink = nil
|
||||
}
|
||||
|
||||
func TestUserForcedGC(t *testing.T) {
|
||||
// Test that runtime.GC() triggers a GC even if GOGC=off.
|
||||
defer debug.SetGCPercent(debug.SetGCPercent(-1))
|
||||
|
||||
var ms1, ms2 runtime.MemStats
|
||||
runtime.ReadMemStats(&ms1)
|
||||
runtime.GC()
|
||||
runtime.ReadMemStats(&ms2)
|
||||
if ms1.NumGC == ms2.NumGC {
|
||||
t.Fatalf("runtime.GC() did not trigger GC")
|
||||
}
|
||||
if ms1.NumForcedGC == ms2.NumForcedGC {
|
||||
t.Fatalf("runtime.GC() was not accounted in NumForcedGC")
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue