package main import ( "fmt" "time" "bufio" "os" "runtime/debug" ) func main() { go periodicFree() fmt.Println("5 second delay") time.Sleep(time.Second * 5) fmt.Println("allocating large slice") slice := make([]byte, 100000000) for i := 0; i < len(slice); i++ { slice[i] = 1 } slice = nil fmt.Println("Large slice set to nil") fmt.Println("Press any key to terminate...") reader := bufio.NewReader(os.Stdin) reader.ReadString('\n') fmt.Println("ending program") } func periodicFree() { ticker := time.NewTicker(time.Second * 20) for _ = range ticker.C { fmt.Println("Freeing memory...") debug.FreeOSMemory() } }