我正在使用 Java 编写算法实现。在 OS X 10.7 之前,我使用 Shark Profiler 来分析我的实现,效果很好。但是,新的 Instruments 不再找到过程名称。我已经尝试使用 Shark 的 VM 参数(即 -agentlib:Shark )运行 java 应用程序,但它们在 10.7 中是未知的,而且我找不到这样的仪器代理库。
关于如何将程序名称附加到仪器中的符号名称(一些十六进制数字)的任何想法?我正在使用 Eclipse Indigo,如果这有什么不同的话。
谢谢!
编辑:到目前为止,OS X Mountain Lion 没有任何改变。
编辑#2:(?)开发人员通过苹果的错误报告者的更新:
dtrace 过去曾支持 Java 堆栈,但老实说,我不能说是否一直保持支持。对于您要测量的内容,这可能是一种可行的解决方法——否则,这不是性能工具目前的优先事项。您可能希望从 /usr/bin/cpu_profiler.d 中的 D 脚本开始,并修改它以收集 jstack。
编辑#3:好的,经过更多讨论后发现开发人员本人并不知道该脚本的来源。显然,Instruments 中的时间分析器无论如何都不使用 DTrace,所以剩下的唯一选择就是编写我们自己的 DTrace 脚本或工具。
你是对的,我道歉。我不确定那个脚本是从哪里来的,当我仔细查看它时,它没有 jstack 动作,所以它不是你想要的。看起来我可以为您提供的唯一 java 分析选项是 DTrace。DTrace 有一个配置文件提供程序和一个收集 java 堆栈的 jstack 操作。您可以使用“聚合”来确定最重的堆栈跟踪,所有这些都可以在命令行中进行。DTrace 的文档主要由 Sun 维护,我会指导您阅读任何 DTrace 教程,因为大多数都包含配置文件提供程序。
不管人们在网上怎么说,Instruments 并没有在所有事情上都使用 DTrace,特别是时间分析,所以我无法在 Instruments UI 中为您提供快速修复。