如何获取当前 Go程序运行所占用的内存大小?

13 min read

在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结构体中的其他字段。