3

UNIX で実行するスタンドアロン Java プログラムのメモリ リークの問題を突き止めようとしています。JConsoleまたはVisualVMでJMXを使用して接続できるように、ポートとパラメーターをセットアップしました。

これらは少し役に立ちますが、残念ながら、メモリがどこに行ったかはわかりません。メモリの使用量がわかるだけです。メモリを消費しているオブジェクトを見つけるのに役立つ、より詳細なプロファイラーを探しています。誰にもアイデアはありますか?プログラムを再構成する必要がないように、できれば JMX ポートで通信するものを使用します。ありがとう!

4

4 に答える 4

3

問題のマシンに X11 クライアント ライブラリがインストールされていて、X11 転送を許可する到達可能な ssh サーバーがあり、ローカル マシン (おそらくhttp://sourceforge.net/projects/xming/ ) で実行されている X11 サーバーがあり、かつ、 Sun Java 6u10 以降では、ssh (-X または -Y のいずれかを使用) で Linux ボックスに接続し、そこでjvisualvm を実行しながら、ローカル マシンで GUI インターフェイスを表示できます。

同じマシン上で実行すると、あらゆる種類の構成ブードゥーを行う代わりに、jvisualvm を実行中の Java プロセスに直接接続できます。

于 2009-09-23T22:18:15.103 に答える
1

NetBeans Java プロファイラーは、リモート JVM のプロファイリングをサポートしています。JMX を使用して、NetBeans をリモート JVM に接続できます。

JavaPassion サイトで利用可能なプレゼンテーションには、開始方法に関するいくつかの指針が示されています。

于 2009-09-23T19:49:24.960 に答える
0

私はいくつか見ましたが、YourKitが一番気に入りました。

これは非常に使いやすく、JMX との相性も抜群です。

于 2009-09-23T19:48:41.180 に答える
0

ええと... 実際、VisualVM には優れたメモリ プロファイラーがあり、どのオブジェクトがメモリを消費するかだけでなく、それらがどこで (おそらく意図せずに) 参照されているかを知ることができます。

[監視] タブの [ヒープ ダンプ] ボタンを押すだけで、驚くことができます。

于 2009-09-23T19:59:49.190 に答える