为了账号安全,请及时绑定邮箱和手机立即绑定

Golang内存分配测试

Golang内存分配测试

Go
蛊毒传说 2021-11-08 16:54:43
我正在尝试使用我的“程序”分配内存 - 只是为了分配它并留在那里 - 用于测试目的。当我在我的 MacOS 上运行它时,活动监视器显示它分配了 1.6 GB,当我为 linux 编译它并在那里运行它时,它什么也不做——它打印了消息,但机器上没有使用 ram。我做错了吗?有没有更好的办法?这是我的代码:package mainimport (    "fmt"    "unsafe"    "time")func main() {    var buffer [100 * 1024 * 1024]string    fmt.Printf("The size of the buffer is: %d bytes\n", unsafe.Sizeof(buffer))    time.Sleep(300 * time.Second)}首先我使用字节作为我的数组类型,但它在我的 mac 上没有工作?
查看完整描述

1 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

您的代码中没有任何内容需要内存。编译器完全有权利优化整个分配,即使编译器不这样做,操作系统也不会提交内存-您永远不会分配任何内容,因此它可能只是镜像零页。

我对您使用的任何 Linux 与您使用的 MacOS 之间的细微差别一无所知,因此几乎无法确定。很可能您检查 linux 机器上的内存的方式只给您提交的内存,而您看到的是 MacOS 上的所有虚拟内存,或者可能存在其他细微的差异。无论如何,由于编译器变得智能并且我们在 PC 上拥有虚拟内存,因此获得任何有意义的基准变得越来越难——我们使用的工具通常足够智能,可以避免不必要的浪费;并且您将尝试的大多数基准测试几乎完全是不必要的浪费。

基准测试很难。


查看完整回答
反对 回复 2021-11-08
  • 1 回答
  • 0 关注
  • 165 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信