我在寫一個使用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
如果你有任何工作,我會很感興趣。 –