我在写一个使用Java的算法实现。在OS X 10.7之前,我使用了Shark Profiler来描述我的实现,这很好地工作。但是,新仪器不再找到过程名称。我已经尝试用鲨鱼的VM参数(即-agentlib:Shark)运行java应用程序,但它们对于10.7是未知的,我找不到这样的instrumentlib用于乐器。在Time Profiler,Instruments,OS X中缺少JAVA过程名称
有关如何将过程名称附加到Insturments中的符号名称(这是一些十六进制数字)的任何想法?我使用Eclipse Indigo,如果这有什么不同。
谢谢!
编辑:到目前为止,OS X Mountain Lion没有任何改变。
编辑#2:(?)通过苹果的bug记者从开发商的更新:
的DTrace对Java已支持在过去的分堆,但老实说,我不能说是否支持一直保持着。对于您要测量的内容而言,这可能是一种可行的解决方法 - 否则,对于此时的性能工具而言,这不是优先考虑的因素。你可能想从/usr/bin/cpu_profiler.d中的D脚本开始,并修改它以收集jstack。
编辑#3:好的,经过多次讨论后发现开发者自己并不知道脚本来自哪里。显然,Instruments中的时间剖析器不会使用DTrace,因此剩下的唯一选择是编写我们自己的DTrace脚本或工具。
你说得对,我很抱歉。我不确定脚本是从哪里来的,当我仔细看过它时,它没有jstack动作,所以它不是你想要的。它看起来像我可以为您提供的唯一一个java分析选项是DTrace。 DTrace有一个配置文件提供程序和一个收集java堆栈的jstack操作。您可以使用“聚合”来确定最重的堆栈轨迹,并且所有这些都可以从命令行运行。 DTrace的文档主要由Sun维护,因为大多数文档提供程序都涵盖了该文档,所以我会引导您参阅任何DTrace教程。
尽管人们在网上说什么,Instruments并没有将DTrace用于任何事情,特别是时间分析,所以我无法为您提供仪器UI中的快速修复。
太好了,谢谢。我希望这个问题很快就会得到解决,尽管这个问题已经存在很长一段时间了。我将提交一份错误报告。 – HdM
所以,我从一位开发人员那里得到了一个更新: “dtrace在过去的几个点上都支持Java堆栈,尽管我真的不知道支持是否得到维护。这可能是一个可行的解决方法对于你正在测试的内容 - 对于性能测试工具来说,这不是优先考虑的事情,你可能想从/usr/bin/cpu_profiler.d中的D脚本开始,并修改它以收集jstack “。 – HdM
如果你有任何工作,我会很感兴趣。 –