24

これについては、SOで以前に同様の質問があったことを認識していますが、私が何をする必要があるかを正確に説明しましょう。

コマンドラインJavaアプリケーションを実行する一連のテストがあり、それらにメモリプロファイリングを追加したいと思います。私が目にするオプションの1つは、メモリスナップショットを提供するコードを(おそらくサードパーティのツール/ライブラリを使用して)アプリケーションに追加することです。もう1つのオプションは、アプリケーションとJVMを管理/計測するサードパーティツールを使用することです(理想的には、コードを変更する必要はありません)。私はValgrindのようなものを考えていますが、Java用です。また、可能であればオープンソース。

私が本当にやりたいのは、メモリ使用量が定期的に、たとえば毎秒監視され、テキストファイルにダンプされるようにメモリテストを設定することです。そうすれば、メモリ使用量が時間の経過とともに変動/増加/減少するかどうかを確認できます。最大ピークと最小ピークを計算することもできます。

ここの誰かがこのようなことをしましたか?

前もって感謝します。

4

9 に答える 9

16

JProfilerのようなものを使用すると、JVMに特定のパラメーターを追加するだけで済みます。JVMTIを使用します。

私はあなたがプロファイラーと彼らがあなたのために何ができるかを正確に読んでいるべきだと思います。また、JVMTIを読むことをお勧めします。

JVMTMツールインターフェイス(JVM TI)は、ツールで使用するための新しいネイティブプログラミングインターフェイスです。これは、状態を検査する方法と、Java仮想マシン(JVM)で実行されているアプリケーションの実行を制御する方法の両方を提供します。JVM TIは、プロファイリング、デバッグ、モニタリング、スレッド分析、カバレッジ分析ツールなど、JVM状態へのアクセスを必要とする幅広いツールをサポートします。

注:JVM TIは、Java仮想マシンプロファイラーインターフェイス(JVMPI)およびJava仮想マシンデバッグインターフェイス(JVMDI)に代わるものです。JVMPIとJVMDIは、J2SETMの次のメジャーリリースで削除される予定です。

于 2009-04-16T16:16:12.603 に答える
6

Yourkitにはかなり優れたプロファイラーもあります

于 2009-04-16T16:30:21.697 に答える
4

チェックしましたか

VisualVMEclipse-Callisto

于 2009-04-16T16:24:31.537 に答える
3

開始するのに適した場所は、JVMが「java-Xrunhprof」をサポートしているかどうかを確認することです。これにより、シナリオをより複雑にすることなく、ヒーププロファイリング情報を生成できます。

http://docs.oracle.com/javase/7/docs/technotes/samples/hprof.htmlを参照してください

あなたはそれを始めるのに十分だと思うかもしれません。

于 2009-04-16T17:43:54.030 に答える
2

yourkitなどのいくつかのプロファイラーには、メモリ割り当てをトレースするためのAPIがあります。ここでのもう1つのオプションは、 jxinsightglassboxjamonなどの監視ツールです。

ヒープダンプを分析するには、 EclipseMemoryAnalyzerが入手できる最高のツールです。これは無料でオープンソースなので、ヒープダンプの分析を必要なだけ自動化できます。

于 2009-04-16T16:31:38.573 に答える
2

私は Eclipse で開発していますが、その優れたプロファイラーを使用するために Netbeans を使用しています。一部の商用のものに比べて制限がありますが、ほとんどのボトルネックを見つけるには十分です

于 2009-04-17T15:26:28.563 に答える
2

JRockit JVM に付属するコマンド ライン ユーティリティであるjrcmdを使用できます。Java プロセスの pid がわかっている場合は、次のようにします。

JROCKIt_HOME\bin\jrcmd <pid> print_object_summary

そしてそれはあなたに与えるでしょう:

31.8% 3198k    41907   -137k [C
11.9% 1196k      300     +0k [B
11.4% 1151k    49118     +6k java/lang/String
 6.1% 612k     5604     +0k java/lang/Class
 4.3% 431k     2388     +0k [I
 3.5% 353k    15097     +0k java/util/HashMap$Entry
 ...
于 2009-04-26T10:40:12.377 に答える
1

dynaTrace 製品版をお勧めします。メモリ アプリケーションをプロファイリングする素晴らしいツールです。低いオーバーヘッドと 100% の実行済みトランザクション。

于 2013-03-11T14:36:36.850 に答える
1

上記の回答に加えて、私は数年前にプロファイラーを楽しんでいました。それが役立つかどうかはわかりません。

于 2009-04-16T16:36:17.983 に答える