小编nhu*_*ter的帖子

运行时:内存不足,内存不足

最近发生了一个非常奇怪的问题.我的程序运行在一个有8GB内存的docker上,当恐慌发生时使用了4GB.有超过4GB的内存可用,为什么会发生这种情况?下面是恐慌堆栈输出.

# ulimit -m
unlimited

# go version
1.6.2
Run Code Online (Sandbox Code Playgroud)

我试图getAllCombinationComplex重复运行代码行,内存使用量增加到大约5GB,但恐慌并没有再次发生.

fatal error: runtime: out of memory

runtime stack:
runtime.throw(0xd28a90, 0x16)
        /usr/local/go1.6.2/src/runtime/panic.go:547 +0x90
runtime.sysMap(0xf409e80000, 0x3ecc390000, 0x434a00, 0x1080918)
        /usr/local/go1.6.2/src/runtime/mem_linux.go:206 +0x9b
runtime.(*mheap).sysAlloc(0x1066280, 0x3ecc390000, 0xdfc4d6d680)
        /usr/local/go1.6.2/src/runtime/malloc.go:429 +0x191
runtime.(*mheap).grow(0x1066280, 0x1f661c8, 0x0)
        /usr/local/go1.6.2/src/runtime/mheap.go:651 +0x63
runtime.(*mheap).allocSpanLocked(0x1066280, 0x1f661c4, 0x10677f0)
        /usr/local/go1.6.2/src/runtime/mheap.go:553 +0x4f6
runtime.(*mheap).alloc_m(0x1066280, 0x1f661c4, 0xffffff0100000000, 0x7ff85dbfddd0)
        /usr/local/go1.6.2/src/runtime/mheap.go:437 +0x119
runtime.(*mheap).alloc.func1()
        /usr/local/go1.6.2/src/runtime/mheap.go:502 +0x41
runtime.systemstack(0x7ff85dbfdde8)
        /usr/local/go1.6.2/src/runtime/asm_amd64.s:307 +0xab
runtime.(*mheap).alloc(0x1066280, 0x1f661c4, 0x10100000000, 0x41587c)
        /usr/local/go1.6.2/src/runtime/mheap.go:503 +0x63
runtime.largeAlloc(0x3ecc386800, 0x7ff800000000, 0x6)
        /usr/local/go1.6.2/src/runtime/malloc.go:766 +0xb3
runtime.mallocgc.func3()
        /usr/local/go1.6.2/src/runtime/malloc.go:664 +0x33
runtime.systemstack(0xc820028000)
        /usr/local/go1.6.2/src/runtime/asm_amd64.s:291 +0x79
runtime.mstart()
        /usr/local/go1.6.2/src/runtime/proc.go:1051

goroutine 63798322149 [running]:
runtime.systemstack_switch() …
Run Code Online (Sandbox Code Playgroud)

runtime out-of-memory go

1
推荐指数
1
解决办法
1273
查看次数

标签 统计

go ×1

out-of-memory ×1

runtime ×1