我想执行一个" Hello world"在内存非常有限的设备上使用Go编写的程序。
在Linux上运行时,当前的内存占用量似乎非常高(64 MB VM大小和40 MB VM数据用于hello world)。
如何配置Go运行时环境以减少内存使用?
答案 0 :(得分:3)
请注意,名称中包含“虚拟”的内存使用情况指标无法按原样进行分析,如上所述,是虚拟的。
Go的运行时(对于由gc
工具链构建的二进制文件,gccgo
可能会使用自己的分配方法 - 我不确定)在Linux上使用所谓的{{3}在启动时告诉操作系统它想要“拥有”一个相当大的内存区域,操作系统确认这一点,但没有真正分配内存(没有物理内存页面),而实际分配只发生在进程中真的请求内存。
因此,要分析的唯一合理内存参数是RSS
- 驻留集大小,这是映射到进程的地址空间的物理内存量 - 它物理上的内存已分配且拥有 - 与虚拟统计数据相对。有关详细说明,请参阅"arena allocator",一般浏览this。