Memory 一个简单的Go程序的高内存使用率
Codechef中最简单的问题是读取输入并写入输出,只要数字不是42。我编写了以下代码:Memory 一个简单的Go程序的高内存使用率,memory,go,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) } } 它是可以接受的,但根据站点的情况,它使
package main
import "fmt"
func main() {
var num int8
fmt.Scanln(&num)
for ; num != 42; fmt.Scanln(&num) {
fmt.Println(num)
}
}
它是可以接受的,但根据站点的情况,它使用124.6M内存。我用C写了基本相同的东西,花了160万,我很困惑。你知道这可能是什么原因吗
我是新来的。这可能是一个大胆的错误。我没有检查,但我怀疑您的程序使用124+MB的内存。我不知道这个数字是从哪里来的,但我猜你把分配的虚拟内存和“已用内存”搞混了。这两个数字可能很接近,也可能不接近
Go通过操作系统保留了一个很大的内存区域,但在Go运行时实际进一步分配之前,它不是“已用内存”。无人认领的虚拟内存在大多数系统上不消耗实际内存,因此基本上是免费的。我没有检查,但我怀疑您的程序使用124+MB的内存。我不知道这个数字是从哪里来的,但我猜你把分配的虚拟内存和“已用内存”搞混了。这两个数字可能很接近,也可能不接近
Go通过操作系统保留了一个很大的内存区域,但在Go运行时实际进一步分配之前,它不是“已用内存”。无人认领的虚拟内存在大多数系统上不消耗实际内存,因此基本上是免费的。Codechef提交部分,这就是我看到的。它不显示这是已使用的内存还是已分配的虚拟内存。我猜你是对的。如果你好奇,请使用检查实际的堆分配。Codechef提交部分,这就是我看到的。它不显示这是已使用的内存还是已分配的虚拟内存。我猜你是对的。如果你好奇,请使用检查实际的堆分配。