2

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 を使用してプログラムを見ると、[監視] ページに何も表示されません。

残念ながら、VisualVM ドキュメント サイト (visualvm.java.net) はダウンしているようです。

私が間違っていることを理解するのを手伝ってくれる人に感謝します。

4

1 に答える 1

2

Oracle の Tomas Hurka のおかげで、この質問に答えることができます。

この問題は、jvm が検出されてから jvmstat (http://java.sun.com/performance/jvmstat/) によって初期化されるまでのタイムアウトが原因で発生します。ウィービングをオンにすると、この間隔が明らかに増加しました。

これを修正するには 2 つの方法があります。

1) 事前定義されたポートの監視対象アプリケーションで JMX を明示的に有効にすることができます。

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

VisualVM から [ファイル] -> [JMX 接続の追加] を介してアプリケーションに接続し、接続文字列として "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)

トーマスに再び感謝します。彼はこれからポイントを獲得する必要があります

于 2011-09-01T11:54:54.110 に答える