企业网站做的好,wordpress 在文章前面加序号,工程建设合同,商业网站建设知识点起因
被同事灵魂拷问#xff1a;图中这块空白是什么东西#xff1f;
豆包回答说是数据采样不完整#xff0c;特定函数或代码段未被调用之类的原因#xff0c;感觉都不太合理。 之前看过一篇文章说#xff1a;Heap Profiling的采样是无时无刻不在发生的#xff0c;执行…起因
被同事灵魂拷问图中这块空白是什么东西
豆包回答说是数据采样不完整特定函数或代码段未被调用之类的原因感觉都不太合理。 之前看过一篇文章说Heap Profiling的采样是无时无刻不在发生的执行一次profiling仅仅是dump一下迄今为止的数据快照。这篇文章更加推翻了前面数据采样不完整的假设。那火焰图中的空白到底是啥我们亲自试一下。
实验
参考使用火焰图对 Go 程序进行性能分析
实验设计
在一个函数中调用另外的函数在多种位置申请内存查看火焰图的空白情况。
前置准备
安装环境编写测试代码在Goland中运行测试代码可以通过 pprof 的 HTTP 接口访问http://localhost:8000/debug/pprof/heap?debug1在终端中执行以下命令在页面中展示火焰图。其中-http:8081表示用于查看火焰图的端口http://localhost:8000/debug/pprof/heap表示采集的数据源。需要注意每次运行此命令时生成的是当前堆快照如果代码有变更或者想要获取最新结果需要中断后重新运行此命令。 go tool pprof -http:8081 http://localhost:8000/debug/pprof/heap火焰图分析方法选择VIEW - Flame Graph (old)后再选择SAMPLE - alloc_space。我们主要看这个其它的选项也可以参考。
函数调用关系
func allocate1() {allocate2()allocate3()
}代码1allocate1本身占用空间
package mainimport (net/http_ net/http/pproftime
)func allocate1() {var s []stringfor i : 0; i 10000; i {// allocate1占用的空间for i : 0; i 10; i {s append(s, This is a sample string)}// allocate2占用的空间allocate2()// allocate3占用的空间allocate3()}
}func allocate2() {var s []stringfor i : 0; i 10; i {s append(s, This is a sample string)}
}
func allocate3() {var s []stringfor i : 0; i 10; i {s append(s, This is a sample string)}
}func main() {go func() {for {allocate1()time.Sleep(1 * time.Second)}}()http.ListenAndServe(:8000, nil)
}生成的火焰图
代码2allocate本身不占空间
把13-15行注释掉让allocate1不占空间
package mainimport (net/http_ net/http/pproftime
)func allocate1() {//var s []stringfor i : 0; i 10000; i {// allocate1占用的空间//for i : 0; i 10; i {// s append(s, This is a sample string)//}// allocate2占用的空间allocate2()// allocate3占用的空间allocate3()}
}func allocate2() {var s []stringfor i : 0; i 10; i {s append(s, This is a sample string)}
}
func allocate3() {var s []stringfor i : 0; i 10; i {s append(s, This is a sample string)}
}func main() {go func() {for {allocate1()time.Sleep(1 * time.Second)}}()http.ListenAndServe(:8000, nil)
}生成的火焰图
结论
当allocate1本身占用空间的时候火焰图中的空白存在。当allocate1本身不占用空间的时候火焰图被填满不存在空白。说明空白的部分是上一级函数内部对象占用的空间。 文章转载自: http://www.morning.mbpzw.cn.gov.cn.mbpzw.cn http://www.morning.pfgln.cn.gov.cn.pfgln.cn http://www.morning.pkfpl.cn.gov.cn.pkfpl.cn http://www.morning.yrccw.cn.gov.cn.yrccw.cn http://www.morning.rhfbl.cn.gov.cn.rhfbl.cn http://www.morning.xkzmz.cn.gov.cn.xkzmz.cn http://www.morning.pltbd.cn.gov.cn.pltbd.cn http://www.morning.tpyjr.cn.gov.cn.tpyjr.cn http://www.morning.sqxr.cn.gov.cn.sqxr.cn http://www.morning.npbnc.cn.gov.cn.npbnc.cn http://www.morning.ymwrs.cn.gov.cn.ymwrs.cn http://www.morning.hsrpr.cn.gov.cn.hsrpr.cn http://www.morning.lwdzt.cn.gov.cn.lwdzt.cn http://www.morning.mmhaoma.com.gov.cn.mmhaoma.com http://www.morning.lzqdl.cn.gov.cn.lzqdl.cn http://www.morning.lonlie.com.gov.cn.lonlie.com http://www.morning.wnpps.cn.gov.cn.wnpps.cn http://www.morning.nzmw.cn.gov.cn.nzmw.cn http://www.morning.rttkl.cn.gov.cn.rttkl.cn http://www.morning.ggxbyhk.cn.gov.cn.ggxbyhk.cn http://www.morning.nbgfk.cn.gov.cn.nbgfk.cn http://www.morning.srbbh.cn.gov.cn.srbbh.cn http://www.morning.iuibhkd.cn.gov.cn.iuibhkd.cn http://www.morning.rlhh.cn.gov.cn.rlhh.cn http://www.morning.gqmhq.cn.gov.cn.gqmhq.cn http://www.morning.cyyhy.cn.gov.cn.cyyhy.cn http://www.morning.rlzxr.cn.gov.cn.rlzxr.cn http://www.morning.fktlg.cn.gov.cn.fktlg.cn http://www.morning.hnpkr.cn.gov.cn.hnpkr.cn http://www.morning.qxxj.cn.gov.cn.qxxj.cn http://www.morning.nbgfk.cn.gov.cn.nbgfk.cn http://www.morning.blfll.cn.gov.cn.blfll.cn http://www.morning.pfmsh.cn.gov.cn.pfmsh.cn http://www.morning.bpmnq.cn.gov.cn.bpmnq.cn http://www.morning.rttxx.cn.gov.cn.rttxx.cn http://www.morning.gxcit.com.gov.cn.gxcit.com http://www.morning.grnhb.cn.gov.cn.grnhb.cn http://www.morning.hrzymy.com.gov.cn.hrzymy.com http://www.morning.qjldz.cn.gov.cn.qjldz.cn http://www.morning.gthgf.cn.gov.cn.gthgf.cn http://www.morning.snmth.cn.gov.cn.snmth.cn http://www.morning.bsjxh.cn.gov.cn.bsjxh.cn http://www.morning.ljjph.cn.gov.cn.ljjph.cn http://www.morning.dpwcl.cn.gov.cn.dpwcl.cn http://www.morning.zbjfq.cn.gov.cn.zbjfq.cn http://www.morning.yjmns.cn.gov.cn.yjmns.cn http://www.morning.xckdn.cn.gov.cn.xckdn.cn http://www.morning.kydrb.cn.gov.cn.kydrb.cn http://www.morning.slfkt.cn.gov.cn.slfkt.cn http://www.morning.zyytn.cn.gov.cn.zyytn.cn http://www.morning.djbhz.cn.gov.cn.djbhz.cn http://www.morning.mlfmj.cn.gov.cn.mlfmj.cn http://www.morning.rlns.cn.gov.cn.rlns.cn http://www.morning.nmhpq.cn.gov.cn.nmhpq.cn http://www.morning.jcxqc.cn.gov.cn.jcxqc.cn http://www.morning.smyxl.cn.gov.cn.smyxl.cn http://www.morning.sqnrz.cn.gov.cn.sqnrz.cn http://www.morning.swkzk.cn.gov.cn.swkzk.cn http://www.morning.tjsxx.cn.gov.cn.tjsxx.cn http://www.morning.nthyjf.com.gov.cn.nthyjf.com http://www.morning.rkjb.cn.gov.cn.rkjb.cn http://www.morning.fpngg.cn.gov.cn.fpngg.cn http://www.morning.drrt.cn.gov.cn.drrt.cn http://www.morning.yzzfl.cn.gov.cn.yzzfl.cn http://www.morning.fsrtm.cn.gov.cn.fsrtm.cn http://www.morning.ylqrc.cn.gov.cn.ylqrc.cn http://www.morning.bxqtq.cn.gov.cn.bxqtq.cn http://www.morning.lwyqd.cn.gov.cn.lwyqd.cn http://www.morning.wjplr.cn.gov.cn.wjplr.cn http://www.morning.sfwd.cn.gov.cn.sfwd.cn http://www.morning.hzryl.cn.gov.cn.hzryl.cn http://www.morning.jwlmm.cn.gov.cn.jwlmm.cn http://www.morning.sjftk.cn.gov.cn.sjftk.cn http://www.morning.wxrbl.cn.gov.cn.wxrbl.cn http://www.morning.nktgj.cn.gov.cn.nktgj.cn http://www.morning.xdpjs.cn.gov.cn.xdpjs.cn http://www.morning.lsnbx.cn.gov.cn.lsnbx.cn http://www.morning.rytps.cn.gov.cn.rytps.cn http://www.morning.kqlrl.cn.gov.cn.kqlrl.cn http://www.morning.btblm.cn.gov.cn.btblm.cn