Javaで何を使用することをお勧めしますか?
唯一の要件は、オープンソースであるか、高額なアカデミックライセンスを持っていないことです。
jdk6 に付属する VisualVM には、基本的なプロファイラーが含まれています。VisualVM には jdk が付属しているため、jdk6 がインストールされている場合は、jdk6 もインストールされている可能性があります。
ここにリストがあります(リンクが壊れている場合に備えて、以下にリストします)
- JMemProf
- JMP
- DrMem
- JTreeProfiler
- NetBeans プロファイラ
- ジャモン API
- JBoss プロファイラー
- MessAdmin
- 赤外線
- Tomcatプローブ
- Java インタラクティブ プロファイラー (JIP)
- Profiler4j
- ストップウォッチ
- J測定
- DJProf
- TIJmp
- アルモン
- アプリスパイ
- エウレカJ
- ジャペックス
- OKTECH プロファイラー
- Perf4j
ああ。Netbeans Profilerは、2009 年に developer.com の「Product of the Year」を受賞しました。
Javaには、HProfと呼ばれる基本的な組み込みプロファイラーがあります。それが提供する結果を、より完全な機能のプロファイラーからの結果と比較することは有用だと思います。
オープンソース ツールjvmtopには、基本的なコンソール プロファイラーが含まれています。出力例:
JvmTop 0.7.0 alpha - 15:16:34, amd64, 8 cpus, Linux 2.6.32-27, load avg 0.41
http://code.google.com/p/jvmtop
Profiling PID 24015: org.apache.catalina.startup.Bootstrap
36.16% ( 57.57s) hudson.model.AbstractBuild.calcChangeSet()
30.36% ( 48.33s) hudson.scm.SubversionChangeLogParser.parse()
7.14% ( 11.37s) org.kohsuke.stapler.jelly.JellyClassTearOff.parseScript()
6.25% ( 9.95s) net.sf.json.JSONObject.write()
3.13% ( 4.98s) ....kohsuke.stapler.jelly.CustomTagLibrary.loadJellyScri()
これは、 TPTPを使用したJavaアプリケーションプロファイリングに関する記事であり、チュートリアルは、 EclipseTPTPを使用したJ2SE5.0ベースのアプリケーションのプロファイリングです。
Java Mission Controlは、開発に無料で使用でき、Eclipseと統合されています。とにかくJVMが収集しているデータに便乗するため、オーバーヘッドは非常に低くなります(<1%)。
使い方はとても簡単で、レイテンシープロファイリング、オンラインメモリ検査、詳細なgc統計など、他のプロファイリングツールでは通常見られない多くの情報を提供することもできます。
シンプルで使いやすいオープン ソース プロファイラーをお探しの場合は、Jip ( Java Interactive Profiler ) をご覧になることをお勧めします。BSD ライセンスの下で公開されています。小さなプログラムには非常に役立つことがわかりました。少なくとも、それが与える結果は、hprofs の出力よりもはるかに理解しやすいものです。
これは手早く、ダーティで、非常に効果的です。スレッド ダンプをいくつか取得するか、プログラムを数回一時停止して、スタック トレースを調べます。
JVM Monitorは、Eclipse と統合された Java プロファイラーであり、Java アプリケーションの CPU、スレッド、およびメモリ使用量を監視します。
さらに詳細な分析が必要な場合は、次のステップとして他のツール ( TPTP、Memory Analyzerなど) を使用できます。
Netbeans IDE には無料のプロファイラーが含まれています。
また、私の記憶が正しければ、JProfiler のアカデミック ライセンスは (比較的) 安価です。