Skip to content

Instantly share code, notes, and snippets.

@btfak
Created November 20, 2013 03:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save btfak/7557431 to your computer and use it in GitHub Desktop.
Save btfak/7557431 to your computer and use it in GitHub Desktop.
递归没有GC
package main
import (
"fmt"
"io"
"net"
"os"
"runtime"
"time"
)
var debug bool
var store []byte
func main() {
store = make([]byte, 1024)
//debug = true
go Summary()
//for {
Get()
//}
}
func Get() {
conn, err := net.Dial("tcp", "10.1.1.132:80")
check(err)
_, err = conn.Write([]byte("hi!"))
check(err)
sum := 0
for {
n, err := conn.Read(store)
sum += n
if n == 0 {
break
}
if err != nil {
fmt.Println(err)
if err == io.EOF {
break
}
return
}
}
conn.Close()
if debug {
fmt.Println(sum)
}
Get()
}
func check(err error) {
if err != nil {
fmt.Println(err)
os.Exit(0)
}
}
func Summary() {
var m runtime.MemStats
for {
time.Sleep(100 * time.Millisecond)
runtime.ReadMemStats(&m)
fmt.Println("HeapSys:", m.HeapSys)
fmt.Println("HeapAlloc:", m.HeapAlloc)
fmt.Println("HeapIdle:", m.HeapIdle)
fmt.Println("HeapReleased:", m.HeapReleased)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment