特定のJavaプロセスのヒープダンプ(メモリリークが疑われる)を取得したいのですが、jvisualvmツールを起動すると、実行中のJavaプロセス。
私はこれについてグーグルで調べており、jvisualvmツールを起動するのと同じJDKを使用してJavaプロセスを実行する必要があることを示すために、しかし、私が見る限り、これはすでに事実です。私はすべてをローカルで実行しています(マシンへのリモートアクセス権があります)。
考慮すべきいくつかのこと:
Java.exe
実行可能ファイル仮想化されたサーバーのコピーを待っているので、それをいじくりまわすことができます(これは運用サーバーです)。しかしその間、 jvisualvm(または、jconsole)でプロセスが表示されない理由に関するアイデアはありますか?
さて、少し調べてみたところ、ピーターのコメントは正しかったようです。 JVMプロセスは別のユーザーによって起動されたため(Windowsサービスによって開始されたため、ネットワークサービスアカウント)、jvisualvmに表示されませんでした。
アプリケーション構成にアクセスできるため、次の回避策が見つかりました。これには、ターゲットJVMの非セキュアJMXを明示的に有効にすることが含まれます。
次のJVMパラメータを追加します。
-Dcom.Sun.management.jmxremote.port=3333 -Dcom.Sun.management.jmxremote.ssl=false -Dcom.Sun.management.jmxremote.authenticate=false
[ファイル]-> [JMX接続の追加]をクリックして、JMXを使用してリモートプロセスをjvisualvmに追加します。ポート3333を使用してプロセスに接続できます。必要に応じてポートを変更できます。
これをもう少し詳しく説明する記事へのリンク: http://download.Oracle.com/javase/6/docs/technotes/guides/visualvm/jmx_connections .html
最も簡単な方法は、jvisualvm 管理者として(win: "管理者として実行")を実行することです。これは理想的ではありませんが、機能します。すべてのJavaプロセスが表示されます。