問題タブ [visualvm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - ヒープダンプを検索して、実行中のJavaアプリケーションの値などをプログラムで見つけるVisualVMのようなソフトウェアの代替手段は?
私はJavaアプリケーションの経験がありませんが、これらのアプリケーションのメモリアドレスへの静的ポインタなどを見つけることは、明らかにコードを処理するJavaエンジンのために(ほぼ)不可能であることがわかりました(この方法で名前を付ける場合は修正してください)間違ってください)。
今、私は VisualVM ( https://visualvm.dev.java.net/ ) を使用しましたが、それは素晴らしいことです。Java プロセスを選択して、ヒープ ダンプを作成できます。次に、すべてのクラスとその値が表示されます。
このメソッドを使用してヒープ ダンプを継続的にポーリングし、ゲームの XY や Z などのオブジェクト値を受け取ることはできますか? このようなアプリケーションとプログラムで対話するにはどうすればよいですか?また、これを VisualVM で行うべきではない場合、代替手段は何でしょうか?
編集:これが私がする必要があることです: 特定の値を持つプロパティを持つすべてのクラスを見つけることができる必要があります。例: X 座標 (float) を検索すると、クラス "PlayerCoordsHandler" (単なる例) とそれに対応する float とその値が返されるはずです... または、この同じ float を再度見つける方法にすぎません。 (たとえば再起動後)。このプロセスは、現在既知のプロパティ (x float) の値を要求してプログラムで取得できる限り、プログラムである必要はありません (たとえば、コマンド ライン ユーティリティを使用するか、ファイルから読み取る)。
Edit2: ターゲット アプリケーションは Windows 実行可能ファイル (ただし Java で作成) であり、独自の Java VM を起動します。デバッグ用の Java パラメータを追加することはできません。ただし、VirtualVM はプロセスを問題なくデバッグできるため、これは必須ではないようです。誰でも方法を知っていますか?
前もって感謝します。
java - visualvm を websphere 7 に接続します。
ローカルの Windows デスクトップで、visualvm と websphere 7 を連携させようとしています。JMX 経由で接続しようとしましたが、うまくいきません。誰かがvisialvmとwebsphere 7を動作させることができましたか?
よろしくFF
java - Tomcat 6 を VisualVM 経由でリモート接続できない
この問題に関する他の質問を確認しましたが、これまでのところ問題はありません。私のセットアップは次のとおりです。TC6 は私の macbook の debian vm で実行されます。/etc/default/tomcat6.0 には、次のオプションが設定されています。
netstat -ntlp は私に与えます:
ここで 6550:
ファイアウォール:
jvisualm を使用して OSX から接続しようとすると:
VisualVM は次のエラーで失敗します。
ssh -X
Tomcat が実行されているのと同じマシンで jvisualvmを使用して VM に接続して起動すると、最初は TC が表示されませんが、上記のように jmx 接続を追加できます。
これは、外国のホストが rmiregistry にアクセスするのを不思議なことに妨げられているという問題でしょうか? どうしてこんな愚かなことをする人がいるのだろうか?
私は何を間違っていますか?
(4 長文すみません)
java - VisualVMプロファイリングセッションの結果の解釈
Mac OS Xでこのjdbc-driverを使用してSQLiteデータベースにデータ(80kタプルで約15mb)を書き込むアプリケーションがあります。これはトランザクションを使用して実行され、最大のものには1つのテーブルに約45kの挿入が含まれます。アプリケーションをプロファイリングするとき、いくつかのことが奇妙に思えます。
- を使用して最初にアプリケーションを一時停止する
System.in.read()
と、プロセスによって割り当てられたメモリがゆっくりと増加し続けます。何故ですか? - アプリケーションを実行すると、VisualVMモニターで使用されるヒープスペースは常に約80MBになります。ただし、メモリ使用量をプロファイリングすると、合計で約10MBになります。誰かがこの違いを説明できますか?
助けてくれてありがとう。
java - Windows Server 2003 のローカル システム アカウントで jvisualvm.exe を実行するにはどうすればよいですか?
Java 1.6 u 20 を搭載した Windows Server 2003 で Windows サービスとして GlassFish 3.0.1 を実行していますが、概ね満足しています。
このJVMでVisualVMを使えるようにしたいのですが、Tomcat running as windows serviceを出発点としてUnable to use JConsoleを使いましたが、
jvisualvm.exe と nbexec.exe プロセスがタスク マネージャーに SYSTEM ユーザーとして表示されますが、自分で手動で実行したときのように、プログラムから GUI が表示されません。違いが生じる場合に備えて、Windows 7 からリモート デスクトップでログインしています。
その他の興味深い点:
新しいジョブが追加されたことを報告しますが、10.55 で CMD ウィンドウを開きません。
VisualVM をサービスとして登録する方法の説明では、サービスの開始が報告されますが、GUI は表示されません。 http://blogs.oracle.com/nbprofiler/entry/monitoring_java_processes_running_as
これを Windows Server 2003 で実行できるようになった人はいますか?
java - JavaAgentをVisualVMプラグインとしてパッケージ化する方法
エージェントを制御するためのSWTGUIとともにJavaエージェントを作成しました。
https://github.com/mchr3k/org.intrace/wiki
このライブラリをVisualVMのプラグインにパッケージ化して、VisualVMを使用してエージェントをJVMに接続できるようにします。
これを行うためのNetbeansモジュールをここで作成しました。
http://github.com/mchr3k/org.intrace/tree/master/InTrace-VisualVM-Plugin/
これは、Netbeansからプロジェクトを実行するときに機能します。ただし、「NBMの作成」を使用してプロジェクトをパッケージ化すると、結果のライブラリをVisualVMにインストールできません。ログからの出力は次のとおりです。
また、エージェントとクライアントのライブラリが小さすぎるため、nbmファイルにパッケージ化されていないのではないかと疑っています。
問題は、プロジェクトbuild.xmlに何かを追加する必要があることだと思いますが、何を理解するのに苦労しています。
http://github.com/mchr3k/org.intrace/blob/master/InTrace-VisualVM-Plugin/build.xml
誰かが私が欠けているものを提案できますか?
java - Javaプログラムのメモリ使用量を測定する最良の方法は?
現在VisualVMを使用していますが、生成されたグラフを保存できないという問題があります。メモリ使用量と実行時間に関するデータを報告する必要がありますが、実行時間はSystem.nanoTime()
. 私はNetBeans プロファイラーも試しましたが、それは私が望むものではありません。なぜなら、それを遅くするような特定の部分を探しているわけではないからです。その最大の問題は、処理時間がかかりすぎることです。また、少なくとも私が知る限り、VisualVM のようにデータを簡単にキャプチャ/転送することはできません。
理想的には、より簡単に情報を取得できるメソッド呼び出しが最善の方法ですが、実際にグラフを保存できる VisualVM のようなものであれば問題ありません。VisualVM でのパフォーマンスも、NetBeans プロファイラーと比較してかなり優れていますが、それは私が NetBeans プロファイラーを使用していなかったからだと思います。
現在Ubuntuを使用していますが、Windows 7でも問題ありません。ただし、これを行うことに特化したプログラムが必要です。そうでないプログラムによって取得される情報には、JVM やその他のものが含まれる可能性が高いため、省略した方がよいでしょう。
どうやら、現在のセッションのスナップショットを保存し、VisualVM でウィンドウを最大化できるので、グラフを大きくしたり、スナップショットを撮ったり、切り取ったりすることができます... しかし、それはハックのようなものです。より良い提案を歓迎します。
java - JavaVisualVM.npsプロファイラーデータをExcelにエクスポートします
VisualVMによってキャプチャされた.npsプロファイラーデータをExcelに変換する方法はありますか?
つまり、HotSpotメソッドのテーブルビューを取得したいと思います。
最後に、VisualVMプロファイラー統計(コマンドラインスクリプトなど)のキャプチャを自動化し、それをExcel(CSVファイルなど)にエクスポートして、Googleドキュメントスプレッドシートに自動的にアップロードできるようにする方法があるかどうかを知りたいと思います。
VisualVMは標準のHPROFcpu = samplesを使用しているように見えますが、リモートで実行できます。JVM引数としてプロファイリングを有効にすることしか認識していません。JMXからそれをトリガーする方法はありますか?
java - Javaアプリケーション/Oracleデータベースのプロファイリング/最適化を開始するにはどうすればよいですか?
昨日、アプリケーションの最適化と、プログラマーがプログラムの最も使用されている部分を見つける方法と、それらをプロファイリングおよび変更して最大の利益を得る方法について読みました(投資した時間/作業とメモリ/速度の向上を比較した場合)。これで、Eclipseプロファイラーを実行してVisualVMを取得しましたが、このデータを適切に使用する方法がわかりません。私の主な懸念事項は、メモリ使用量(XMLを生成し、それをzipとしてディスクに保存するか、ダウンロードのためにユーザーにzipとしてフラッシュする)とデータベースからの速度低下(インデックスが存在しないか、良くありません、そして、いずれにせよ、それらについてあまり知らないので、私はあなたにもっと話すことができません:)しかし、私はこれを始める方法さえ知りません。最初のケースでは、VisalVMはプログラムが最大200MBを使用することを示しています。しかし、ヒープダンプを調べて、最も使用されているオブジェクト(またはその呼び出し方法)をクリックすると、情報が圧倒されます。2番目のケースについては、Toadにいくつかのツールがあることを除けば、私はさらに知りません。
私が知りたいのは、これを開始する方法と、ローカルパフォーマンスに満足したら、本番アプリケーションで実行する方法です。
Edit1:つまり、メモリ使用量の具体例として(XMLを生成し、それをzipとしてディスクに保存するか、ダウンロードのためにzipとしてユーザーにフラッシュします)。これは、「ヒープダンプ」を選択し、保持されているサイズで上位20個のオブジェクトを選択し、詳細を開いたときに得られるものです。
これは、同じユースケースでプロファイラーを開いたときに得られるものです。
問題は、この画面から何がわかるかということです。:)