golang http 内存泄漏的问题
代码
package main import ( "crypto/tls" "io/ioutil" "log" "net/http" "os" "path" "strings" "time" ) func panicIfNotNil(e error) { if e != nil { panic(e) } } func loop() { ex, err := os.Executable() panicIfNotNil(err) ex = path.Dir(ex) for { now := time.Now() tr := &http.Transport{ TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, DisableKeepAlives: true, // 可以关闭链接 } req, err := http.NewRequest("GET", "https://httpbin.org/ip", nil) panicIfNotNil(err) client := &http.Client{ Timeout: time.Second * 8, Transport: tr, } resp, err := client.Do(req) if resp != nil { bodyByteArr, err := ioutil.ReadAll(resp.Body) panicIfNotNil(err) log.Printf("status_code:%d, body:%s, cost:%v", resp.StatusCode, string(bodyByteArr), time.Since(now)) defer resp.Body.Close() } if err != nil && strings.Index(err.Error(), "Client.Timeout exceeded while awaiting headers") > -1 { continue } panicIfNotNil(err) time.Sleep(time.Second * 3) } } func main() { loop() }
一开始只有 4-m 的样子,过了两分钟就到 10M 左右了,这是为什么呀,我可能确保链接时关闭了的 求大佬指点下