我正在使用简单的线程池加载网页,同时从文件动态加载网址.但是这个小程序慢慢分配与我的服务器一样多的内存,直到omm杀手停止它.它看起来像resp.Body.Close()不释放正文的内存(内存大小〜下载页面*平均页面大小).如何强制golang释放为body html文本分配的内存?
package main
import (
"bufio"
"fmt"
"io/ioutil"
"net/http"
"os"
"strings"
"sync"
)
func worker(linkChan chan string, wg *sync.WaitGroup) {
defer wg.Done()
for url := range linkChan {
// Getting body text
resp, err := http.Get(url)
if err != nil {
fmt.Printf("Fail url: %s\n", url)
continue
}
body, err := ioutil.ReadAll(resp.Body)
resp.Body.Close()
if err != nil {
fmt.Printf("Fail url: %s\n", url)
continue
}
// Test page body
has_rem_code := strings.Contains(string(body), "googleadservices.com/pagead/conversion.js")
fmt.Printf("Done url: %s\t%t\n", url, has_rem_code)
}
}
func …Run Code Online (Sandbox Code Playgroud)