我是Go的新手,它试图弄清楚它如何管理内存消耗。我的一个测试项目中的内存出现问题。我不明白为什么当我的程序长时间运行时,Go使用越来越多的内存(从不释放它)。我正在运行下面提供的测试用例。第一次分配后,程序将使用近350 MB的内存(根据ActivityMonitor)。然后,我尝试释放它,ActivityMonitor显示内存消耗增加了一倍。为什么?我正在使用Go 1.0.3在OS X上运行此代码。此代码有什么问题?在Go程序中管理大变量的正确方法是什么?在实现使用大量时间和内存的算法时,我还遇到了另一个与内存管理相关的问题。运行一段时间后,将引发“内存不足”异常。package mainimport ("fmt" "time")func main() { fmt.Println("getting memory") tmp := make([]uint32, 100000000) for kk, _ := range tmp { tmp[kk] = 0 } time.Sleep(5 * time.Second) fmt.Println("returning memory") tmp = make([]uint32, 1) tmp = nil time.Sleep(5 * time.Second) fmt.Println("getting memory") tmp = make([]uint32, 100000000) for kk, _ := range tmp { tmp[kk] = 0 } time.Sleep(5 * time.Second) fmt.Println("returning memory") tmp = make([]uint32, 1) tmp = nil time.Sleep(5 * time.Second) return}
添加回答
举报
0/150
提交
取消