如何降低在Linux上运行的Go进程的占用空间?

时间:2014-05-01 09:56:57

标签: linux memory-management go footprint

我想执行一个" Hello world"在内存非常有限的设备上使用Go编写的程序。

在Linux上运行时,当前的内存占用量似乎非常高(64 MB VM大小和40 MB VM数据用于hello world)。

如何配置Go运行时环境以减少内存使用?

1 个答案:

答案 0 :(得分:3)

请注意,名称中包含“虚拟”的内存使用情况指标无法按原样进行分析,如上所述,是虚拟的。

Go的运行时(对于由gc工具链构建的二进制文件,gccgo可能会使用自己的分配方法 - 我不确定)在Linux上使用所谓的{{3}在启动时告诉操作系统它想要“拥有”一个相当大的内存区域,操作系统确认这一点,但没有真正分配内存(没有物理内存页面),而实际分配只发生在进程中真的请求内存。

因此,要分析的唯一合理内存参数是RSS - 驻留集大小,这是映射到进程的地址空间的物理内存量 - 它物理上的内存已分配且拥有 - 与虚拟统计数据相对。有关详细说明,请参阅"arena allocator",一般浏览this