英文:
Golang: panic before malloc heap initialized
问题
我在我的 arch Vagrant box 的 $GOPATH
中运行了 go build
命令。但是它输出了以下内容:
runtime: panic before malloc heap initialized
fatal error: runtime: cannot allocate heap metadata
我的 box 版本是 3.10.9-1-ARCH x86_64
,内存为 242M。
为什么我无法在这个 box 中构建 go 文件?
提前感谢。
英文:
I run go build
in the $GOPATH
of my arch Vagrant box.
But it prints out
runtime: panic before malloc heap initialized
fatal error: runtime: cannot allocate heap metadata
And the box is 3.10.9-1-ARCH x86_64
, memory 242M.
Why I can't build go files in the box?
Thanks in advance.
答案1
得分: 2
看起来这是由于虚拟内存不足引起的。
$ ulimit -v 242000
$ go build prog.go
运行时错误:在分配堆内存元数据之前发生恐慌
致命错误:运行时错误:无法分配堆元数据
64位的Go语言需要大量的虚拟内存空间,但不一定需要那么多实际内存。
您可以通过为容器分配更多内存来解决此问题。
您还可以尝试调整/proc/sys/vm/overcommit_memory
的设置。
如果可能的话,您还可以尝试为容器分配交换空间。
英文:
Looks like this is caused by not enough virtual memory
$ ulimit -v 242000
$ go build prog.go
runtime: panic before malloc heap initialized
fatal error: runtime: cannot allocate heap metadata
64bit go needs lots of virtual memory space but not necessarily that much real memory.
You could fix this by allocating more memory to the container.
You could also play with the setting of /proc/sys/vm/overcommit_memory
.
You could also try allocating swap to the container (if possible).
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论