如何在GO中获得总内存/ RAM?

时间:2015-05-04 01:19:01

标签: go

如何获取Go中系统附加的内存/ RAM总量?我想尽可能使用本机代码。我找到了一个包装linux sysinfo命令的库。有更优雅的方式吗?

3 个答案:

答案 0 :(得分:9)

除了runtime.MemStats,您可以使用gosigar来监控系统内存。

答案 1 :(得分:6)

cgo& linux解决方案

package main

// #include <unistd.h>
import "C"

func main() {
    println(C.sysconf(C._SC_PHYS_PAGES)*C.sysconf(C._SC_PAGE_SIZE), " bytes")
}

答案 2 :(得分:1)

在我对此的研究中,我遇到了 memory package,它在许多不同的平台上实现了这一点。如果您正在寻找无需 CGO 的快速简便的解决方案,这可能是您的最佳选择。

来自自述文件:

package main

import (
    "fmt"
    "github.com/pbnjay/memory"
)

func main() {
    fmt.Printf("Total system memory: %d\n", memory.TotalMemory())
}

go Playground

Total system memory: 104857600