来源:未知 时间:2019-10-15 15:26 作者:小飞侠 阅读:次
[导读] 您可以调整malloc.h中的mheapmap_位和malloc.goc中的arena_大小以减少 内存使用量,只要它们满足以下条件: (1UL (12 + MHeapMap_Bits)) = arena_size (例如,我将mheapmap位更改为20,arena大小更改为“...
您可以调整malloc.h中的mheapmap_位和malloc.goc中的arena_大小以减少 内存使用量,只要它们满足以下条件: (1UL << (12 + MHeapMap_Bits)) >= arena_size (例如,我将mheapmap位更改为20,arena大小更改为“4ll<30”,所有测试通过,对于bin/go,bss节的大小将降至约10MB: linux-amd64 go $ size bin/go # before text data bss dec hex filename 4491897 9755233672424 38261873 247d471 bin/go linux-amd64 go $ size bin/go # after text data bss dec hex filename 4491924 97552 8506600 13096076 c7d48c bin/go ) 另外,这个问题并不是由保留的vm空间(16gb)引起的 在64位主机上,因为它们是用prot_none映射的,也就是说,它们不会映射到任何物理 记忆)。它的真正原因是大runtime.mheap。 $ vi malloc.h MHeapMap_Bits=16 $ vi malloc.goc arena_size=1LL<<28 $ go install -a -v std Then rebuilt my app which reduce its VPS footprint from 60MB to 20MB!!! Previously: MHeapMap_Bits=19 arena_size=1LL<<28 将内存减少到24MB,所以我认为降低内存会降低收益。 我不禁要问,如果内存使用是一个bug,或者这些内存设置是否应该作为go build中的标志可用,或者将来某个时候,运行时可能会得到改进,以便自动做出正确的选择。是否值得提交功能请求/错误报告? 考虑到应用程序rss是2.5MB,我认为总占用空间应该在5-10MB左右?如果是的话,可能还有更多的工作要做,我很乐意测试。 然而,完成大约70%的ram需求绝对是非常棒的,因此感谢大家的时间和有用的建议。 干杯。 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com