如何获取 Java 分析转储以在 Mac 上创建火焰图?

2024-01-16

我想从我的 Java 应用程序中收集堆栈跟踪来创建CPU 火焰图 http://www.brendangregg.com/FlameGraphs/cpuflamegraphs.html用于分析。

这与这个问题非常相似:如何从每个示例中的分析器中获取完整的堆栈转储以用于火焰图? https://stackoverflow.com/questions/10333376/how-to-get-complete-stack-dump-from-profiler-in-every-sample-for-use-in-flame-gr有 2 个区别:

  1. 我使用 Java 代码并且需要 Java 堆栈跟踪
  2. 我正在 Mac 上工作(这意味着没有pref据我所知dtraceOSX 上不支持jstack扩大)。

我已经尝试过了轻量级 java-profiler https://code.google.com/p/lightweight-java-profiler/ and 诚实的剖析师 https://github.com/RichardWarburton/honest-profiler,而且这两个似乎都不能在 Mac 上运行。我也尝试过VisualVM http://visualvm.java.net,但我无法让它生成我需要的堆栈跟踪转储。

对我来说,首要任务是从 Java 堆栈跟踪生成火焰图,但是拥有本机调用堆栈也很棒,因为它可以让我解决 I/O 问题(甚至可能生成热/冷火焰图 http://www.brendangregg.com/FlameGraphs/hotcoldflamegraphs.html).


好消息,FlameGraph 存储库有一个“脚本”可以与其中已有的 jstacks 一起使用。

https://github.com/brendangregg/FlameGraph https://github.com/brendangregg/FlameGraph

这是stackcollapse-jstack.pl.

看起来默认情况下它只需要输入中的堆栈跟踪一个接一个的堆栈跟踪,并将每个堆栈跟踪计数为“一个样本点”。

因此,您可以在一个文件中执行多个 jstack(运行一次或几次,或者每秒运行一次“一段时间”等):

jstack pid_of_your_jvm >> my_jstack

然后执行该脚本:

 ./stackcollapse-jstack.pl my_jstack > my_jstack.folded

最后转换为火焰图:

 ./flamegraph.pl --color=java my_jstack.folded > my_jstack.svg

不需要第三方助手(尽管它们可能仍然有用)。

另请注意,stackcollapse-jstack.pl文件丢弃非 RUNNABLE 线程,如果您还想包含“空闲”线程(通常不需要),您可能需要进行调整。

显然你也可以使用linux“perf”命令为java进程生成堆栈,请参阅自述文件https://github.com/brendangregg/FlameGraph https://github.com/brendangregg/FlameGraph

例如,这可能包括更多本机调用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获取 Java 分析转储以在 Mac 上创建火焰图? 的相关文章

  • Android 2.2 SDK - Droid X 相机活动无法正常完成

    我注意到我在 Droid X 上调用的默认相机活动与我的 Droid 和 Nexus One 上的默认相机活动看起来不同 在 Droid 和 Nexus One 上选择 确定 后 活动将完成 Droid X 有一个 完成 按钮 它将带您返回
  • 如何在spring mvc中从控制器名称+操作名称获取映射的URL?

    是否有现有的解决方案可以从 Spring MVC3 中的 控制器名称 操作名称 获取映射的 URL 例如 asp net mvc 或 Rails 中的 UrlHelper 我觉得非常有用 thx 也许 你想要这样的东西 in your Co
  • Delphi 的内存分析工具?

    我建立了一个项目并运行它 然后在 Process Explorer 中查看它 结果发现它在启动时使用的 RAM 比我想象的要多 5 倍 现在 如果我的程序运行得太慢 我会将其连接到分析器并让它告诉我什么正在使用我的所有周期 有没有类似的工具
  • 使用 RecyclerView 适配器在运行时更改布局屏幕

    我有两个布局文件 如下所示 如果列表中存在数据 则我显示此布局 当列表为空时 我会显示此布局 现在我想在运行时更改布局 当用户从列表中删除最后一项时 我想将布局更改为第二张图片中显示的 空购物车布局 In getItemCount Recy
  • 在 HTTP 标头中发送 UTF-8 值会导致 Mojibake

    我想使用 servlet 发送阿拉伯语数据HTTPServletResponse给客户 我正在尝试这个 response setCharacterEncoding UTF 8 response setHeader Info arabicWo
  • 无法在 Spring Boot 测试中模拟 persistenceContext

    我正在使用带有 Mockito 框架的 spring boot 测试来测试我的应用程序 存储库类 EntityManager 之一作为参考 我的班级如下所示 Repository Transactional Slf4j public cla
  • Firestore - RecycleView - 图像持有者

    我不知道如何编写图像的支架 我已经设置了 2 个文本 但我不知道图像的支架应该是什么样子 你能帮我告诉我图像的文字应该是什么样子才能正确显示吗 holder artistImage setImageResource model getArt
  • 主线程如何在该线程之前运行?

    我有以下代码 public class Derived implements Runnable private int num public synchronized void setA int num try Thread sleep 1
  • Java 服务器-客户端 readLine() 方法

    我有一个客户端类和一个服务器类 如果客户端向服务器发送消息 服务器会将响应发送回客户端 然后客户端将打印它收到的所有消息 例如 如果客户端向服务器发送 A 则服务器将向客户端发送响应 1111 所以我在客户端类中使用 readLine 从服
  • Java 8 中函数式接口的使用

    这是来自的后续问题Java 8 中的 双冒号 运算符 https stackoverflow com questions 20001427 double colon operator in java 8其中 Java 允许您使用以下方式引用
  • RSA OAEP、Golang 加密、Java 解密 -BadPaddingException:解密错误

    我正在尝试解密使用 RSA OAEP 在 Golang 中加密的字符串 但出现 BadPaddingException 解密错误 很难弄清楚我错过了什么 这是Golang加密方法 func encryptString rootPEM io
  • Cloudfoundry:如何组合两个运行时

    cloundfoundry 有没有办法结合两个运行时环境 我正在将 NodeJS 应用程序部署到 IBM Bluemix 现在 我还希望能够执行独立的 jar 文件 但应用程序失败 APP 0 bin sh 1 java not found
  • Spring Security OAuth2简单配置

    我有一个简单的项目 需要以下简单的配置 我有一个 密码 grant type 这意味着我可以提交用户名 密码 用户在登录表单中输入 并在成功时获得 access token 有了该 access token 我就可以请求 API 并获取用户
  • 为什么java中的for-each循环中需要声明变量

    for 每个循环的通常形式是这样的 for Foo bar bars bar doThings 但如果我想保留 bar 直到循环结束 我可以not使用 foreach 循环 Foo bar null Syntax error on toke
  • 对象锁定私有类成员 - 最佳实践? (爪哇)

    I asked 类似的问题 https stackoverflow com questions 10548066 multiple object locks in java前几天 但对回复不满意 主要是因为我提供的代码存在一些人们关注的问题
  • Java的-XX:+UseMembar参数是什么

    我在各种地方 论坛等 看到这个参数 并且常见的答案是它有助于高并发服务器 尽管如此 我还是找不到 sun 的官方文档来解释它的作用 另外 它是Java 6中添加的还是Java 5中存在的 顺便说一句 许多热点虚拟机参数的好地方是这一页 ht
  • Android - 9 补丁

    我正在尝试使用 9 块图片创建一个新的微调器背景 我尝试了很多方法来获得完美的图像 但都失败了 s Here is my 9 patch 当我用Draw 9 patch模拟时 内容看起来不错 但是带有箭头的部分没有显示 或者当它显示时 这部
  • Java &= 运算符应用 & 或 && 吗?

    Assuming boolean a false 我想知道是否这样做 a b 相当于 a a b logical AND a is false hence b is not evaluated 或者另一方面 这意味着 a a b Bitwi
  • 嵌入式 Jetty - 以编程方式添加基于表单的身份验证

    有没有一种方法可以按如下方式以编程方式添加基于表单的身份验证 我用的是我自己的LdapLoginModule 最初我使用基本身份验证并且工作正常 但现在我想在登录页面上进行更多控制 例如显示徽标等 有没有好的样品 我正在使用嵌入式 jett
  • CUDA 中指令重放的其他原因

    这是我从 nvprof CUDA 5 5 获得的输出 Invocations Metric Name Metric Description Min Max Avg Device Tesla K40c 0 Kernel MyKernel do

随机推荐

  • 使用 cython 在 python 中对小数组进行高效数学运算

    我使用 numpexpr 对大型数组进行快速数学计算 但如果数组的大小小于 CPU 缓存 则使用简单数组数学在 Cython 中编写代码会更快 特别是在多次调用该函数的情况下 问题是 如何在 Cython 中使用数组 或者更明确地说 Cyt
  • memory_get_peak_usage() 与“实际使用情况”

    If the real usage参数设置为truePHP DOCS 说它将获取从系统分配的内存的实际大小 如果它是false它将获得报告的内存emalloc 这 2 个选项中的哪一个返回最大值 相对于 php ini 中的内存限制值分配的
  • R函数不会修改全局变量

    我有一段简单的 R 代码 它从网站读取 html 数据 然后我尝试循环浏览页面并从每个页面获取数据 我已经多次使用这段代码并且它有效 它将每个页面的结果添加到 R 变量中 但由于某种原因 它在该网站上不起作用 有任何想法吗 library
  • 使 jQuery DataTables 默认提交所有行,而不仅仅是搜索时显示的行

    我使用 jQuery DataTables 来显示系统中的记录 通常使用
  • 使用抗锯齿绘制旋转位图

    我尝试在打开抗锯齿的情况下绘制旋转位图 但它仍然有锯齿并且不平滑 有什么帮助吗 我做了如下 final Paint p new Paint Paint ANTI ALIAS FLAG p setAntiAlias true canvas r
  • 如何使用 grails 1.3.2 和插件 spring-security-core 1 实现自定义 FilterSecurityInterceptor ?

    我正在编写一个 grails 1 3 2 应用程序并使用 spring security core 1 0 实现安全性 由于超出此问题范围的原因 除了开箱即用的拦截器之外 我还实现了自定义 FilterSecurityInterceptor
  • 如何将 future<> 分配给 flutter 中的小部件?

    假设我有一个SingleChildScrollView 其内容是从文件中读取的 singleChildScrollView padding EdgeInsets all 8 0 child nw Text getTextFromFile l
  • Pandas:查找包含列表的一列中的最大值

    我有一个像这样的数据框 fly frame day plcae 0 1 2 3 4 5 A 1 1 2 3 4 B 2 1 2 C 3 1 2 3 4 D 如果我想找到日期列中每个条目的最大值 例如 fly frame day plcae
  • 安卓:语音识别

    可能重复 但我没有找到下面问题的答案 这两天我一直在研究语音识别 但没有得到问题的答案 是否可以将语音识别作为服务来运行 我想实现这样的事情 尽管我的手机通过语音识别处于睡眠模式 但我需要拨打一个号码 当我在火车 公共汽车等地方时 语音识别
  • JavaScript Regex - 查找所有可能的匹配项,即使是在已捕获的匹配项中

    我正在尝试获得所有可能的匹配使用 JavaScript 的正则表达式从字符串中获取 看来我这样做的方法没有匹配已经匹配的字符串部分 变量 var string A1B1Y A1B2Y A1B3Y A1B4Z A1B5Y A1B6Y A1B7
  • 禁用索引 pandas 数据框

    如何删除或禁用 pandas Dataframe 中的索引 我正在从 python for dataanalysis 一书中学习 pandas 并且我已经知道我可以使用 dataframe drop 删除一列或一行 但我没有找到任何关于禁用
  • Mongodb - 当属性具有 Interface 返回类型时如何反序列化

    我试图避免在数据层和使用该层的客户端代码之间引入任何依赖关系 但在尝试使用 Mongo 执行此操作 使用 MongoRepository 时遇到了一些问题 MongoRepository 显示了您创建反映数据结构的类型并在需要时继承实体的示
  • Selenium:如何将浏览器设置为离线模式?

    我需要测试我的应用程序的一项功能 该功能设计为在离线模式下执行 在互联网连接恢复之前使用本地存储对数据进行排队 Selenium可以将浏览器设置为离线模式吗 您可以为 Firefox 创建新的浏览器配置文件 然后配置该配置文件以使用离线模式
  • IE9 是否支持 WebGL 和/或 WebSockets? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions IE9 是
  • 应用栏上的圆角底部

    我想制作一个圆底的应用栏 如下所示 我将如何实现这样的应用程序栏 我尝试阅读 CustomPainter 的文档 但我不认为这是正确的方法 在 Flutter 中 您可以使用 shape 属性在 AppBar 小部件中自定义形状 AppBa
  • 如何从 sqlalchemy jsonify 对象?

    我正在使用 Flask SQLAlchemy 和 javascript 我需要通过 AJAX 将查询结果以 json 格式传递给 javascript 但我不断收到此错误 raise TypeError repr o is not JSON
  • Maven 出现 Eclipse 错误“路径必须包含项目和资源名称”

    我最近开始将 Maven 与 Eclipse 一起使用 我已经设置了几个项目 并且我注意到 如果我尝试指定项目目录之外的构建目录 以覆盖目标 则在执行 更新项目 时会出现错误 更新 Maven 项目 遇到问题 期间发生内部错误 更新 MAv
  • SQLite更新查询Android

    该表包含 4 列 rowID word defintition group id 我想更改某一行的单词和定义 这是我的代码 word 是一个对象 其中存储了 word definition id 和 group id ContentValu
  • 在bat上运行带有删除文件的jar

    我想将文件拖放到 bat 文件上 删除它后 我想运行一个 jar 文件 并将删除的文件路径作为输入 如何才能使用相对路径运行 jar 文件 我的 bat 文件运行的目录是我的用户目录 而不是它所在的目录 goal cmd c java ja
  • 如何获取 Java 分析转储以在 Mac 上创建火焰图?

    我想从我的 Java 应用程序中收集堆栈跟踪来创建CPU 火焰图 http www brendangregg com FlameGraphs cpuflamegraphs html用于分析 这与这个问题非常相似 如何从每个示例中的分析器中获