Go 戈朗没有';t函数结束后的自由变量

Go 戈朗没有';t函数结束后的自由变量,go,Go,我写了一个由golang编写的简单程序,如下所示,它确实占用了4GB的内存空间,并且在函数结束后没有释放它。如何释放占用的内存 func main() { wait := make(chan bool, 1) go func() { slice := make([]int64, 0) for i := 0; i < 1000 * 1000 * 100; i++ { slice = append(slice, 1)

我写了一个由golang编写的简单程序,如下所示,它确实占用了4GB的内存空间,并且在函数结束后没有释放它。如何释放占用的内存

func main() {
    wait := make(chan bool, 1)
    go func() {
        slice := make([]int64, 0)
        for i := 0; i < 1000 * 1000 * 100; i++ {
            slice = append(slice, 1)
        }
    }()

    <- wait
}
func main(){
等待:=制造(chan bool,1)
go func(){
切片:=make([]int64,0)
对于i:=0;i<1000*1000*100;i++{
切片=追加(切片,1)
}
}()

GC只是将此内存标记为有用,而不是立即释放它,他们会定期释放未使用的内存,因此内存真正释放需要一些时间。

是什么让您认为空间无法用于将来的分配?我想在
go func(){}
end在运行此函数之前,必须将内存返回到值。运行此程序时,我的计算机速度太慢。当客户端向我发送http请求时,我创建了一个大的切片并将其保存到excel文件中,我在一个goroutine中运行它,但当函数结束时,占用的内存空间仍然不是空闲的。它将是空闲的,只需几分钟虽然大约5分钟。但是为什么这么慢呢?只需信任Go的GC,不要担心内存管理。GC只需将此内存标记为有用,而不是立即释放,他们会定期释放未使用的内存。