我想在我的Go程序中添加命令行标志,以启用/禁用cpu和内存分析。使用pprof.StartCPUProfile()显式启用CPU分析。但是未明确启用内存分析。你只需在退出时调用pprof.WriteHeapProfile()。如果我从不进行这些调用,是否存在与任何一种分析形式相关的运行时成本?如果没有,这是否意味着内存分析基本上始终开启?
答案 0 :(得分:7)
默认情况下,MemProfileRate非零,但它设置的速率足够低,不会影响大多数程序。默认情况下它是打开的,这样如果程序的内存开始出现气球,就会有一些数据可以在不重新编译的情况下找到问题。
在go1.5中会有一个新的GODEBUG
标志memprofilerate
,因此可以通过环境变量进行更改。设置memprofilerate=0
将禁用内存分析。 http://tip.golang.org/pkg/runtime/