2011-08-31 15 views
1

我正在嘗試使用VisualVM檢查Java應用程序。通常沒有問題,但我試圖設置Eclipselink編織,所以我使用-javaagent標誌啓動程序;使用VisualVM檢查已使用-javaagent啓動的Java應用程序

-Xms1024m -Xmx1582m -Xshare:off -javaagent:C:\Users\Administrator\.m2\repository\org\eclipse\persistence\eclipselink\2.3.0-M7\eclipselink-2.3.0-M7.jar 

當我看着使用Viusal VM的程序時,在Monitor頁面上什麼都看不到。

不幸的是,VisualVM文檔站點(在visualvm.java.net)似乎是關閉的。

感謝任何能幫助我理解我做錯了什麼的人。

+0

也許日食鏈接代碼儀器確實與VisualVM很好地工作? –

+0

你確定這是連接到-javaagent標誌嗎?其他Java應用程序的監視工作正常嗎? –

+0

Tomas,是的,它工作正常,直到我使用-javaagent啓動應用程序。正如Peter所說,我懷疑這是因爲eclipselink是「編織」的 - 這正在改變類的字節碼 - 而這對visualvm不起作用。 – JFK

回答

1

感謝Oracle的Tomas Hurka我可以回答這個問題。

這個問題是由jvm被檢測到和由jvmstat(http://java.sun.com/performance/jvmstat/)初始化時間之間的超時引起的。隨着編織開啓,這個間隔明顯增加。

有兩種方法可以解決這個問題。

1)你可以明確地啓用JMX在預定的端口監控的應用程序與

-Dcom.sun.management.jmxremote.port=<portNum> 
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.ssl=false 

和VisualVM的重視通過文件 - 您的應用程序>添加JMX連接 和使用「localhost:」作爲一個連接字符串。

2)你可以超時;在visualvm/etc目錄中(例如visualvm_132 \ etc)編輯visualvm.conf中的defaults_opts設置,以便根據需要增加-J-Dsun.jvmstat.perdata.syncWaitMs = 10000(我增加了它* 10到100秒)

VisualVM還有一個通過幫助 - >關於 - >日誌文件可用的日誌文件,其中顯示了所有已拋出的異常。在這裏,我發現超時的堆棧跟蹤...

INFO [com.sun.tools.visualvm.jvmstat.JvmstatModelProvider]: Could not get MonitoredVM 
sun.jvmstat.monitor.MonitorException: Could not synchronize with target 
    at sun.jvmstat.perfdata.monitor.v2_0.PerfDataBuffer.synchWithTarget(PerfDataBuffer.java:262) 

再次感謝Tomas。他應該從這個任何點得到

相關問題