在Java剖析中,似乎所有(免費)道路現在都導致了JDK6中包含的VisualVM剖析器。它看起來像一個很好的程序,每個人都會吹捧你如何「將它附加到正在運行的進程中」作爲一項主要功能。問題是,這似乎是在本地進程上使用它的唯一方法。我希望能夠開始我的程序在分析器中,並且跟蹤它的整個執行。個人檔案在VisualVM中執行整個Java程序
我試過使用how to profile application startup with visualvm中描述的-Xrunjdwp
選項,但是在兩種傳輸方法(共享內存和服務器)之間,這兩種方法對我都沒有用。 VisualVM似乎沒有與前者的任何集成,而VisualVM拒絕連接到localhost
或127.0.0.1
,所以後者也不好。我還嘗試在我的程序中插入System.in
的簡單讀取,以便在執行過程中插入暫停,但在此情況下,VisualVM將阻塞,直到讀取完成,並且不允許您在執行完成之前開始分析。 我也嘗試調查the Eclipse plugin,但該網站上充滿了死鏈接,當我嘗試使用它時,發射器崩潰了(這可能不再準確)。NullPointerException
來自C,這對我來說似乎不是特別困難的任務。我只是錯過了一些東西,或者這是一個不可能的要求嗎?我接受任何類型的建議,包括使用不同的(也是免費的)探查器,並且我不反對命令行。
回答你提到的那個問題,你是否嘗試過'suspend = y',而不是發佈的'suspend = n'?如果是這樣的話,你不需要從'System.in'中讀取。 –
是的,但沒關係。我看不出有什麼辦法將程序連接到VisualVM,而不管「suspend」參數。 – kbolino
在那裏應該有一個「正確」的地方。當然,VisualVM可以看到這個過程。問題是它無法分析它。 – kbolino