私はJavaを使用してアルゴリズムの実装を書いています。OS X 10.7までは、Shark Profilerを使用して実装のプロファイルを作成していましたが、これはかなりうまく機能していました。ただし、新しいInstrumentsはプロシージャ名を検出しなくなりました。sharkのVM引数(つまり、-agentlib:Shark)を使用してJavaアプリケーションを実行しようとしましたが、10.7には不明であり、インストゥルメント用のそのようなagentlibは見つかりませんでした。
Insturmentsのシンボル名(16進数)にプロシージャ名を付ける方法について何かアイデアはありますか?違いがあれば、私はEclipseIndigoを使用しています。
ありがとう!
編集:これまでのところ、OS XMountainLionでは何も変わっていません。
編集#2:アップルのバグレポーターを介した(?)開発者からの更新:
dtraceは過去のある時点でJavaスタックをサポートしていましたが、サポートが維持されているかどうかは正直に言えませんでした。これは、測定しようとしているものに対する実行可能な回避策である可能性があります。それ以外の場合、現時点ではパフォーマンスツールの優先事項ではありません。/usr/bin/cpu_profiler.dにあるDスクリプトから始めて、jstackも収集するように修正することをお勧めします。
編集#3:さて、もう少し議論した後、開発者自身がそのスクリプトがどこから来たのか知らなかったことがわかりました。明らかに、InstrumentsのタイムプロファイラーはDTraceを使用しないため、残っている唯一のオプションは、独自のDTraceスクリプトまたはInstrumentを作成することです。
その通りです。お詫び申し上げます。そのスクリプトがどこから来たのかわかりません。注意深く見ると、jstackアクションが含まれていないため、とにかく必要なものではありません。私が提供できる唯一のJavaプロファイリングオプションはDTraceのようです。DTraceには、プロファイルプロバイダーと、Javaスタックを収集するjstackアクションがあります。「集計」を使用して、最も重いスタックトレースを特定できます。これらはすべて、コマンドラインから機能します。DTraceのドキュメントは、ほとんどがSunによって管理されており、ほとんどがプロファイルプロバイダーを対象としているため、DTraceチュートリアルを紹介します。
人々がオンラインで言っていることにもかかわらず、Instrumentsはすべて、特に時間プロファイリングにDTraceを使用しているわけではないので、InstrumentsUIで簡単な修正を提供することはできません。