go-curl icon indicating copy to clipboard operation
go-curl copied to clipboard

貌似有内存泄露呀

Open w22gb8 opened this issue 9 years ago • 0 comments

多次请求通过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()
}

}

w22gb8 avatar Jan 07 '15 09:01 w22gb8