首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在本地系统中运行golang应用程序时设置内存限制

如何在本地系统中运行golang应用程序时设置内存限制
EN

Stack Overflow用户
提问于 2022-09-08 08:39:12
回答 1查看 69关注 0票数 1

我希望在我的windows机器中为go应用程序设置堆大小。

在java中,我们过去在intellij中以vm参数的形式提供-Xms设置,但是如何在golang中提供类似的设置,并为go应用程序设置内存限制。

试着

代码语言:javascript
运行
复制
<env name="GOMEMLIMIT" value="2750MiB" />

但不起作用

我们使用的是go 1.6.2版本。

EN

回答 1

Stack Overflow用户

发布于 2022-09-08 08:47:24

Go 1.19增加了对软内存限制的支持:

运行时现在包括对软内存限制的支持。此内存限制包括Go堆和运行时管理的所有其他内存,并排除外部内存源,例如二进制本身的映射、以其他语言管理的内存以及操作系统代表Go程序持有的内存。这个限制可以通过runtime/debug.SetMemoryLimit或等效的GOMEMLIMIT环境变量来管理。

你不能设置一个硬限制,因为如果你的应用程序需要更多的内存,它就会出现故障。

若要从应用程序中设置软限制,只需使用:

代码语言:javascript
运行
复制
debug.SetMemoryLimit(2750 * 1 << 20) // 2750 MB

若要在应用程序之外设置软限制,请使用GOMEMLIMIT env,例如:

代码语言:javascript
运行
复制
GOMEMLIMIT=2750MiB

但是请注意,这样做可能会使应用程序的性能更差,因为它可能会强制执行更频繁的垃圾收集,并更积极地将内存返回到操作系统,即使您的应用程序会再次需要它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73646060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档