Go语言限制内存分配?

发布于 2024-11-17 18:28:16 字数 186 浏览 2 评论 0原文

我正在寻找一种限制 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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

感情废物 2024-11-24 18:28:16

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.

呆橘 2024-11-24 18:28:16

也许您想将 ulimit 与您的 go 代码结合使用?

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

迷你仙 2024-11-24 18:28:16

您可以通过 runtime/debug.SetMemoryLimit 执行此操作

You can do this via runtime/debug.SetMemoryLimit

独守阴晴ぅ圆缺 2024-11-24 18:28:16

除了 runtime.MemStats 你还可以使用 gosigar 来监控系统内存。

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文