aboutsummaryrefslogtreecommitdiff
path: root/test/init1.go
diff options
context:
space:
mode:
authorDan Willemsen <dwillemsen@google.com>2015-09-15 13:49:18 -0700
committerDan Willemsen <dwillemsen@google.com>2015-09-15 13:51:48 -0700
commit6ff23253f8283d0c81c9db51c2d7803e086c93ad (patch)
treed70b53746897f5f6a71c19b7c062a079b4f54001 /test/init1.go
parent1630e73131c3c8cc2a16baa2aefe3b9b82de658b (diff)
downloadlinux-x86-brillo-m10-release.tar.gz
Change-Id: Ic39c72590cb0561132faefbca121c3782372b9bf
Diffstat (limited to 'test/init1.go')
-rw-r--r--test/init1.go26
1 files changed, 17 insertions, 9 deletions
diff --git a/test/init1.go b/test/init1.go
index f6eda6edf..62dfb72bf 100644
--- a/test/init1.go
+++ b/test/init1.go
@@ -17,22 +17,30 @@ func init() {
go send(c)
<-c
- const chunk = 1 << 20
- memstats := new(runtime.MemStats)
- runtime.ReadMemStats(memstats)
- sys := memstats.Sys
- b := make([]byte, chunk)
+ const N = 1000
+ const MB = 1 << 20
+ b := make([]byte, MB)
for i := range b {
b[i] = byte(i%10 + '0')
}
s := string(b)
- for i := 0; i < 1000; i++ {
+
+ memstats := new(runtime.MemStats)
+ runtime.ReadMemStats(memstats)
+ sys, numGC := memstats.Sys, memstats.NumGC
+
+ // Generate 1,000 MB of garbage, only retaining 1 MB total.
+ for i := 0; i < N; i++ {
x = []byte(s)
}
+
+ // Verify that the garbage collector ran by seeing if we
+ // allocated fewer than N*MB bytes from the system.
runtime.ReadMemStats(memstats)
- sys1 := memstats.Sys
- if sys1-sys > chunk*50 {
- println("allocated 1000 chunks of", chunk, "and used ", sys1-sys, "memory")
+ sys1, numGC1 := memstats.Sys, memstats.NumGC
+ if sys1-sys >= N*MB || numGC1 == numGC {
+ println("allocated 1000 chunks of", MB, "and used ", sys1-sys, "memory")
+ println("numGC went", numGC, "to", numGC)
panic("init1")
}
}