私はDTraceでいくつかの良い経験をしました。
24時間年中無休で稼働している本番サーバーでJavaコードを実行しているクライアントがいました。アプリケーションでいくつかのパフォーマンスの問題が発生しました。プロファイラーを接続するためにJVMを停止することはできませんでした。さらに、同じ負荷の下での動作はラボには存在しませんでした。
実行中のJVMに接続でき、導入されるオーバーヘッドが最小限であったため、JVM関連のプローブでDTraceを使用して問題を解決しました(Netra T2000 SPARCマシンで1.3%)。
この方法の利点は、すべてのデバッグが顧客のラボへのダイヤルアップ(33kbps)回線を介して行われたことです。この制約で他のプロファイラー/デバッガーを実行することはほとんど不可能です(JDWPはこの帯域幅に対して非常に冗長です)。DTraceスクリプトを使用して、自分にとって興味深いものだけをフィルタリングしました。
ヒントについては、http:
//java.dzone.com/articles/java-profiling-dtrace?utm_source = feedburner&utm_medium = feed&utm_campaign = Feed :+ javalobby / frontpage +(Javalobby + / + Java + Zone )を参照してください。
http://download.oracle.com/javase/6/docs/technotes/guides/vm/dtrace.html
私はそれらのスクリプトを適応させました
http://blogs.oracle.com/ahl/date/20050418#dtracing_java
もう1つの大きな利点は、カスタム統計を作成するために簡単に使用できる集計値です。
ただし、適切な条件があれば、他のツールを使用してすべてを簡単に行うことができます。DTraceは非常に強力ですが、より多くのベアメタル条件を対象としています(おそらくDLightプロジェクトが役立つでしょう)。