在Time Profiler,Instruments,OS X中缺少JAVA过程名称

HdM*_*HdM 9 java macos profiling dtrace instruments

我正在使用Java编写算法实现.在OS X 10.7之前,我使用Shark Profiler来分析我的实现,它的工作非常好.但是,新仪器不再找到程序名称.我已经尝试使用鲨鱼的VM参数运行java应用程序(即-agentlib:Shark),但它们对于10.7是未知的,我找不到这样的工具的agentlib.

有关如何将过程名称附加到Insturments中的符号名称(有些十六进制数字)的任何想法?我正在使用Eclipse Indigo,如果这有任何区别的话.

谢谢!

编辑:到目前为止,OS X Mountain Lion没有任何改变.

编辑#2:来自(?)开发人员的更新通过apple的bug报告者:

dtrace过去一直支持Java堆栈,但老实说我不能说是否支持了这种支持.对于您要测量的内容而言,这可能是一种可行的解决方法 - 此时,这不是性能工具的优先级.您可能希望从/usr/bin/cpu_profiler.d中的D脚本开始并修改它以收集jstack.

编辑#3:好的,经过一些更多的讨论后发现开发人员本身并不知道该脚本的来源.显然,仪器中的时间分析器无论如何都不使用DTrace,因此唯一的选择是编写我们自己的DTrace脚本或仪器.

你是对的,我道歉.我不确定那个脚本来自哪里,当我仔细查看它时,它没有jstack动作,所以它不是你想要的.看起来我能提供的唯一java分析选项是DTrace.DTrace有一个配置文件提供程序,以及一个收集java堆栈的jstack操作.您可以使用"聚合"来确定最重的堆栈跟踪,所有这些都可以从命令行进行.DTrace的文档主要由Sun维护,我会引导您访问任何DTrace教程,因为大多数都涵盖了配置文件提供程序.

尽管人们在网上说,仪器不会将DTrace用于所有内容,特别是时间分析,因此我无法在仪器UI中为您提供快速修复.

Alp*_*ter 5

乐器依赖于Sun开发的一些名为dtrace的可爱软件.dtrace有一个名为'jstack()'的函数,它应该用java符号打印堆栈跟踪,还有一个'ustack()'应该为其他语言(python,node.js等)做类似的事情. ).不幸的是,OS X的dtrace版本不支持这些方法,因此这些仪器不会提供该功能.

所以,不幸的是,在Apple修复他们的东西之前,你不会从这些工具中获取这些信息.:(

请访问此主题以获取更多信息:http: //www.mail-archive.com/dtrace-discuss@opensolaris.org/msg04863.html

我已经向苹果提交了一个关于他们缺乏对辅助堆栈跟踪器的支持的错误,如果你想要这个功能你也应该提交一个bug:https: //bugreport.apple.com