| // Copyright 2011 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package runtime_test |
| |
| import ( |
| "runtime" |
| "testing" |
| ) |
| |
| func TestGcSys(t *testing.T) { |
| memstats := new(runtime.MemStats) |
| runtime.GC() |
| runtime.ReadMemStats(memstats) |
| sys := memstats.Sys |
| |
| itercount := 1000000 |
| if testing.Short() { |
| itercount = 100000 |
| } |
| for i := 0; i < itercount; i++ { |
| workthegc() |
| } |
| |
| // Should only be using a few MB. |
| runtime.ReadMemStats(memstats) |
| if sys > memstats.Sys { |
| sys = 0 |
| } else { |
| sys = 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) |
| } |