簡體   English   中英

使用VisualVM檢查以-javaagent啟動的Java應用程序

[英]Inspecting a java application which has been started with -javaagent using VisualVM

我正在嘗試使用VisualVM檢查Java應用程序。 通常沒有問題,但是我嘗試設置Eclipselink編織,因此我使用-javaagent標志啟動程序;

-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)似乎已關閉。

感謝任何可以幫助我了解我在做什么錯的人。

感謝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

並通過File-> Add JMX連接從VisualVM附加到您的應用程序,並使用“ localhost:”作為連接字符串。

2)您可以超時;

a)在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。 他應該從中得到任何要點

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM