关于golang map内存回收
请看下面代码:
package main
import (
"net/http"
)
type Spyte []byte
func newSpyte() Spyte {
var bytes []byte
for i := 0; i < 16; i++ {
bytes = append(bytes, '0')
}
return Spyte(bytes)
}
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
var num = 1000000
var dataMap = map[int]Spyte{}
for i := 0; i < num ; i++ {
dataMap[i] = newSpyte()
}
w.Write([]byte("finished"))
})
http.ListenAndServe(":8080", nil)
}
编译运行go build -o test.exe && test.exe
之后查看内存使用情况发现map分配的内存并没有被回收:
有什么方法能够解决第20行map内存回收问题?
共 1 个回复
1851616111
你这个程序是的意思是生成一个很长的byte数组,生成完毕后再写入response。
如果不想太浪费内存,应该是边生成边写入。