// run

// 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.

// Test that goroutines and garbage collection run during init.

package main

import "runtime"

var x []byte

func init() {
	c := make(chan int)
	go send(c)
	<-c

	const chunk = 1 << 20
	memstats := new(runtime.MemStats)
	runtime.ReadMemStats(memstats)
	sys := memstats.Sys
	b := make([]byte, chunk)
	for i := range b {
		b[i] = byte(i%10 + '0')
	}
	s := string(b)
	for i := 0; i < 1000; i++ {
		x = []byte(s)
	}
	runtime.ReadMemStats(memstats)
	sys1 := memstats.Sys
	if sys1-sys > chunk*50 {
		println("allocated 1000 chunks of", chunk, "and used ", sys1-sys, "memory")
	}
}

func send(c chan int) {
	c <- 1
}

func main() {
}
