Golang Slices And The Case Of The Missing Memory
但上面文章后面写的也不对,其实用buffer读取,他的办法也是申请一个很大的byte来做的,其实如果这个bytes不足,还是会扩大*2的问题。还有
size := 32 * 1024 io.copy一次会申请32K的内存,这里还是内存消耗过大。应该选用:
ioutil.CopyBuffer.
其实直接申请足够大的bytes,使用
io.ReadFull直接读取就可以。然后防止cap>>len的情况,再判断下,然后再复制一次到length大小的bytes即可