在Go中,可以使用runtime
包中的MemStats
来获取程序运行时的内存信息,包括程序的堆内存大小。
以下是一个示例代码:
package main
import (
"fmt"
"runtime"
)
func main() {
var m runtime.MemStats
runtime.ReadMemStats(&m)
fmt.Printf("Alloc = %v MiB", bToMb(m.Alloc))
}
func bToMb(b uint64) uint64 {
return b / 1024 / 1024
}
这段代码通过调用runtime.ReadMemStats()
来读取运行时的内存信息,并通过m.Alloc
获取程序当前的堆内存大小。为了方便阅读,我们定义了一个辅助函数bToMb()
,将字节数转换成兆字节。
请注意,这个方法只能获取到当前程序的堆内存大小,并不包括栈内存和其他内存分配。如果你想获取更详细的内存信息,可以参考runtime.MemStats
结构体中的其他字段。