go-curl
go-curl copied to clipboard
貌似有内存泄露呀
多次请求通过top能发现RES占用内存轻微持续上升,go1.4,linux 64,代码如下: package main
import ( "fmt" curl "github.com/andelf/go-curl" )
func main() { fooTest := func(buf []byte, userdata interface{}) bool { //println("DEBUG: size=>", len(buf)) //println("DEBUG: content=>", string(buf)) return true } easy := curl.EasyInit() defer easy.Cleanup() for i := 0; i < 1000000; i++ { easy.Setopt(curl.OPT_URL, "http://192.168.1.3/") easy.Setopt(curl.OPT_WRITEFUNCTION, fooTest) if err := easy.Perform(); err != nil { fmt.Printf("ERROR: %v\n", err) } } } 协程下同样如此: package main
import ( "fmt" curl "github.com/andelf/go-curl" "sync" )
func main() { var wg sync.WaitGroup var limit = make(chan struct{}, 200) fooTest := func(buf []byte, userdata interface{}) bool { //println("DEBUG: size=>", len(buf)) //println("DEBUG: content=>", string(buf)) return true } for i := 0; i < 1000000; i++ { limit <- struct{}{} wg.Add(1) go func() { easy := curl.EasyInit() defer easy.Cleanup() easy.Setopt(curl.OPT_URL, "http://192.168.1.3/") easy.Setopt(curl.OPT_WRITEFUNCTION, fooTest)
if err := easy.Perform(); err != nil {
fmt.Printf("ERROR: %v\n", err)
}
<-limit
defer wg.Done()
}()
wg.Wait()
}
}