| package runtime_test | |
| import ( | |
| "runtime" | |
| "testing" | |
| ) | |
| func TestGcSys(t *testing.T) { | |
| runtime.GC() | |
| runtime.UpdateMemStats() | |
| sys := runtime.MemStats.Sys | |
| for i := 0; i < 1000000; i++ { | |
| workthegc() | |
| } | |
| // Should only be using a few MB. | |
| runtime.UpdateMemStats() | |
| if sys > runtime.MemStats.Sys { | |
| sys = 0 | |
| } else { | |
| sys = runtime.MemStats.Sys - sys | |
| } | |
| t.Logf("used %d extra bytes", sys) | |
| if sys > 4<<20 { | |
| t.Fatalf("using too much memory: %d bytes", sys) | |
| } | |
| } | |
| func workthegc() []byte { | |
| return make([]byte, 1029) | |
| } |