【发布时间】:2026-02-16 07:35:01
【问题描述】:
我正在使用以下功能下载小于 20MB 的文件。它将整个内容读取到内存中,因为另一个函数必须先对字节执行工作,然后才能将其写入磁盘。
func getURL(url string) ([]byte, error) {
resp, err := http.Get(url)
if err != nil {
return nil, fmt.Errorf("getURL: %s", err)
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, fmt.Errorf("getURL: %s", err)
}
return body, nil
}
这工作正常,但系统上的所有内存都被消耗了。
body使用的内存被另一个函数处理后是否可以释放,这样内存使用不会大于当前正在处理的字节数?
【问题讨论】:
标签: http go memory server garbage-collection