go - 如何在 Go 中分析大堆栈
问题描述
我有一个玩具围棋问题,我正在努力尝试了解有关围棋分析的更多信息。如果我正确读取配置文件,我的程序将在 runtime.morestack 中花费 43% 的累积 CPU 时间。我的理解是,只有当 goroutine 的堆栈超过为其分配的数量时,才应该调用 runtime.morestack。据我所知,我的程序的任何部分都不应该使用大量的堆栈空间。有什么方法可以查看我的堆栈有多大?(每个堆栈帧的大小和变量都有哪些?
我已经运行pprof.Lookup("goroutine").WriteTo(f, 0)
了,但看起来这并没有报告堆栈帧的大小或其内容。
解决方案
推荐阅读
- php - Wordpress 城市前缀到 url 作为子域和子页面
- google-cloud-spanner - 使用并发写入更新大型 Spanner 表中的列
- java - 如何在 MySQL 数据库中创建表
- javascript - 如何提交表单而不重定向到其操作页面?
- ms-access - 访问报告中每个带有 [field] 的表达式都会生成 #Name? 错误
- ruby-on-rails - Rails: db:migrate 不一致地改变我盒子上的 schema.rb
- javascript - 如何使子元素显示在窗口开始的位置?
- ionic3 - 如何使用 iFrame 将 Rocket.chat 集成到 Ionic 3 移动应用程序中?
- c - 参数如何有类型但没有名称?
- postgresql - PostgreSQL:匿名 DO 块的 void retun 类型