// 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) { if runtime.GOARCH != "amd64" { // TODO(adg): remove this when precise gc is implemented t.Logf("skipping on non-amd64 systems") return } memstats := new(runtime.MemStats) runtime.GC() runtime.ReadMemStats(memstats) sys := memstats.Sys runtime.MemProfileRate = 0 // disable profiler 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) }