限制Go语言中的内存分配?

huangapple go评论92阅读模式
英文:

Limit the memory allocation in Go Language?

问题

我正在寻找一种在Go语言中限制内存使用的方法。我的应用程序使用Go语言实现,其中有一个必须加载到主内存中的大数据,所以我想限制进程的最大内存大小为用户指定的大小。

在C语言中,实际上,我通过累加malloc分配的内存大小来实现这一点,但我不知道如何在Go语言中做同样的事情。

如果有一种方法可以做到这一点,请告诉我。

谢谢。

英文:

I'm finding a way to limit the memory usage in Go language. My application implementing with Go language has a big data that must be loaded in main memory, so I want to limit the maximum memory size of the process to the size specified by the user.

In C language, actually, I accumulate the sizes of malloc'ed memory to do that, but I don't know how to do same thing in Go language.

Please let me know if there is a way to do it.

Thank you.

答案1

得分: 4

Go垃圾回收器是非确定性的,并且是保守的。因此,使用runtime.MemStats变量对于您的目的来说不会准确。

通过使用用户输入来设置您允许一次加载到进程中的数据的最大大小,来修复您的近似内存使用情况。

英文:

The Go garbage collector is not deterministic and it is conservative. Therefore, using the runtime.MemStats variable is not going to be accurate for your purpose.

Fix your approximate memory usage by setting the maximum size of data that you are going to allow to be loaded at one time into a process using the input from the user.

答案2

得分: 1

也许你想在你的go代码中与ulimit一起使用?

英文:

Perhaps you want to use ulimit in conjunction with your go code?

答案3

得分: 1

您可以通过runtime/debug.SetMemoryLimit来实现此功能。

英文:

You can do this via runtime/debug.SetMemoryLimit

答案4

得分: 0

除了runtime.MemStats之外,您还可以使用gosigar来监控系统内存。

英文:

Besides runtime.MemStats you could use gosigar to monitor system memory.

huangapple
  • 本文由 发表于 2011年6月30日 18:25:24
  • 转载请务必保留本文链接:https://go.coder-hub.com/6533355.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定