简单Go程序的高内存使用率

时间:2013-07-20 14:22:35

标签: memory go

Codechef中最简单的问题是读取输入和写入输出,只要数字不是42.我编写了以下代码:

package main

import "fmt"

func main() {
        var num int8
        fmt.Scanln(&num)
        for ; num != 42; fmt.Scanln(&num) {
                fmt.Println(num)
        }
}

虽然根据网站使用了124.6M内存但是被接受了。我在C中写了基本相同的东西,花了1.6M,我很困惑。你知道是什么导致了这个吗?

我是Go的新手。这可能是一个大胆的错误。

1 个答案:

答案 0 :(得分:5)

我没有检查,但我怀疑你的程序使用 124+ MB的内存。我不知道你从哪里得到这个数字,但我猜你会分配虚拟内存和“用过的内存”。这两个数字可能彼此接近或不相同。

Go通过操作系统保留了一个大的内存区域,但在Go运行时实际进一步分配之前,它不是“已用内存”。无人认领的虚拟内存在大多数系统上都没有真正的内存,因此基本上是免费的。

相关问题