我希望在我的windows机器中为go应用程序设置堆大小。
在java中,我们过去在intellij中以vm参数的形式提供-Xms设置,但是如何在golang中提供类似的设置,并为go应用程序设置内存限制。
试着
<env name="GOMEMLIMIT" value="2750MiB" />
但不起作用
我们使用的是go 1.6.2版本。
发布于 2022-09-08 08:47:24
运行时现在包括对软内存限制的支持。此内存限制包括Go堆和运行时管理的所有其他内存,并排除外部内存源,例如二进制本身的映射、以其他语言管理的内存以及操作系统代表Go程序持有的内存。这个限制可以通过
runtime/debug.SetMemoryLimit
或等效的GOMEMLIMIT
环境变量来管理。
你不能设置一个硬限制,因为如果你的应用程序需要更多的内存,它就会出现故障。
若要从应用程序中设置软限制,只需使用:
debug.SetMemoryLimit(2750 * 1 << 20) // 2750 MB
若要在应用程序之外设置软限制,请使用GOMEMLIMIT
env,例如:
GOMEMLIMIT=2750MiB
但是请注意,这样做可能会使应用程序的性能更差,因为它可能会强制执行更频繁的垃圾收集,并更积极地将内存返回到操作系统,即使您的应用程序会再次需要它。
https://stackoverflow.com/questions/73646060
复制相似问题