我找到了一种限制Go语言内存使用量的方法。我使用Go语言实现的应用程序有一个必须加载到主内存中的大数据,所以我想将进程的最大内存大小限制为用户指定的大小。
在C语言中,实际上,我累积了malloc'ed内存的大小来做到这一点,但我不知道如何用Go语言做同样的事情。
如果有办法,请告诉我。
谢谢。
答案 0 :(得分:4)
Go垃圾收集器不具有确定性,而且是保守的。因此,使用runtime.MemStats变量并不准确。
通过使用用户输入将允许一次加载的数据的最大大小设置为进程,修复大致的内存使用量。
答案 1 :(得分:1)
也许您想将ulimit与go代码结合使用?
答案 2 :(得分:0)
除了runtime.MemStats,您可以使用gosigar来监控系统内存。