您可能会触发gc使用释放未使用的对象,
runtime.GC()并且可能敦促Go运行时使用释放内存到OS
debug.FreeOSMemory(),但是所有这些都只是在扑救。编写良好的Go应用程序永远不必调用它们。
您应该做的是防止运行时不得不分配大量内存。
- 创建/更改处理单元不是在字节片上而是在
io.Reader
s 上进行操作,因此您无需将所有内容读入内存,就可以继续进行resp.Body
下去。请注意,即使必须读取/检查多个主体,也仍然可以只读取和处理一次,而不将其保存在内存中。装置可以是io.Pipe()
,io.TeeReader()
或定制的解决方案。



