golang:无法从Out Of Memory崩溃中恢复过来

vad*_*ste 8 go

在某些情况下,调用append()会触发内存不足的恐慌,似乎append()本身不会返回nil.

我怎么能避免这种恐慌情景并向我的用户显示"资源暂时不可用"?

最好的祝福,

Jim*_*imB 7

你不能.

如果运行时无法为追加分配内存,则可能无法恢复或向用户传达"资源临时不可用".例如,GC可能需要分配以进行清理,或者调度程序可能正在尝试分配新线程.因为没有办法严格控制Go程序中的分配,所以没有办法优雅地处理内存不足.

所有OOM条件终止Go程序.

  • 这个问题让我很好奇,一定有某种方法可以更优雅地处理这个问题。在陷入恐慌之前先发制人地检查系统内存状况并发出警告怎么样? (2认同)