2011-12-09 33 views
9

我在寫一個使用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中的快速修復。

回答

5

儀器依賴於Sun開發的一個可愛的軟件dtrace。 dtrace有一個名爲'jstack()'的函數,該函數應該用java符號打印堆棧跟蹤,還有一個'ustack()'應該爲其他語言(python,node.js等)做類似的事情。 )。不幸的是,OS X的dtrace版本不支持這些方法,因此Instruments不提供該功能。

所以,不幸的是,你不會從這些工具獲取這些信息,直到Apple修復他們的東西。 :(

關注這個主題的更多信息:http://www.mail-archive.com/[email protected]/msg04863.html

我已經提交一個bug與蘋果關於他們缺乏幫手棧示蹤劑的支持,如果你想要這個功能,您應該提交錯誤太:https://bugreport.apple.com

+0

太好了,謝謝。我希望這個問題很快就會得到解決,儘管這個問題已經存在很長一段時間了。我將提交一份錯誤報告。 – HdM

+0

所以,我從一位開發人員那裏得到了一個更新: 「dtrace在過去的幾個點上都支持Java堆棧,儘管我真的不知道支持是否得到維護。這可能是一個可行的解決方法對於你正在測試的內容 - 對於性能測試工具來說,這不是優先考慮的事情,你可能想從/usr/bin/cpu_profiler.d中的D腳本開始,並修改它以收集jstack 「。 – HdM

+0

如果你有任何工作,我會很感興趣。 –

0

我想到的一件事就是編輯javac-g選項包含調試信息。在eclise中(至少在helios中),您可以在'Java Compiler','Classfile Generation'下爲調試數據設置不同的選項。也許這些設置中的一些已經被破壞了。

但是,這並不能解決方法的問題,這些名稱總是包含在類文件中。然而,不同類型的Java VM以不同的方式執行運行時優化,例如參見文檔中關於stack traces的可靠性的註釋。

因此,切換到另一個(版本)VM可能會影響分析器做正確事情的能力。 - 順便說一句,在這個過程中,你沒有隱式地升級你的Java版本(例如1.6到1.7)?

+1

我確實升級到了非蘋果的java版本,儘管據我所知,這個「bug」一直存在,缺少的「worksforme」文章表明它可能與vm無關,我認爲它更多如果找到一個dtace鉤,我會試試這個問題 – HdM

0

如果你想剖析Java應用程序,我建議你使用Oracle的Visualvm(通過Java.net)。該工具可以將內存和CPU分配到該方法,即使對於遠程JVM也是如此。在OSX上,它顯然不是默認JDK的一部分,但您可以在此處獲得:http://visualvm.java.net/download.html 可能是鯊魚的替代品。

+0

我嘗試了visualvm,但是我對它很不滿意,和鯊魚或者樂器相比,它笨重,有着荒謬的開銷,而且非常困難即使使用eclipse插件也可以開始。對我而言,這不是一種選擇。 – HdM

相關問題