首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解perf.map

理解perf.map
EN

Stack Overflow用户
提问于 2018-09-18 18:06:11
回答 1查看 2.8K关注 0票数 3

我知道伟大的轮廓仪工具,我使用它来分析我的生产项目。在这里,我想了解关于perf以及如何理解它的输出。

我在玩perf来采集堆栈痕迹。我使用选项-XX:+UnlockDiagnosticVMOptions -XX:+PreserveFramePointer -XX:+ShowHiddenFrames运行JVM,以避免堆栈跟踪混乱。

我使用命令sudo perf record -e cycles -g -p <my_pid>运行它,以便对两个用户的内核堆栈跟踪进行示例,并比较结果的百分比。我得到的是:

在我看来,start_thread的符号是清晰的。他们来自libjvm.so,我可以假设我运行了我的3条工作线程来做一些工作,这正是我在这里看到的。十六进制数字似乎是运行时编译的java代码指令地址。

的问题:,但是perf-27405.map是从哪里来的,为什么它出现在顶部。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-18 22:42:36

perf-<pid>.map文件是一种向perf提供特定于应用程序的符号映射的方法。

在您的示例中,0x00000000008e06e0属于libjvm.so - perf的一个采样指令指针可以很容易地显示这一点。但另一个0x00007f557d10c19f属于匿名内存区域,不受任何对象文件的支持。这是动态生成的代码,perf不能告诉任何关于它的信息,除非有人帮助。perf-<pid>.map文件是应用程序或外部工具的接口,用于为动态生成的代码提供符号信息。

perf-地图代理就是这种Java的一个例子。它将有关JIT编译的方法的信息填充到perf-<pid>.map文件中,这样perf就可以将这些地址映射到Java名称。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52392319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档