2012-03-08 6 views
-1

私はプロファイリングが初めてです。私はASMを使用してプロファイラを作成しています。実行時のプロファイラはjarのクラス名も含めます。しかし、私は自分のプロジェクトクラスの詳細が必要です。私はあなたがあなた自身に変換したいクラスのためのフィルタを作成する必要がありますasm jarを使用したプロジェクトクラスのプロファイリング

http://www.ibm.com/developerworks/java/library/j-jip/#icomments

+0

有用なプロファイルを作成するのは簡単ではありません。 VisualVMは経験豊かな開発者が多くの作業をしてくれました。 ;) –

+0

プロファイラを使用して変換するクラスのフィルタを作成するにはどうすればいいですか?...リンクまたはチュートリアルが必要です – Raj

+0

ASMライブラリhttp://asm.ow2.orgのチュートリアルから始めます/ –

答えて

2

からコードを得ました。

クラス名が "com/yourcompany /"で始まり、他のすべてのクラスだけを残した場合

プロファイラを作成したので、作成されたエージェントがあるようです。このエージェントの変換メソッドは、クラスデータを持つClassLoaderも渡します。私は確信していませんが、可能であれば、このプロパティをフィルタリングすることもできますし、リソースの起点についてクラスローダをチェックすることもできます。

+0

ありがとうDanielは、クラスローダーのフィルタリングのためのリンクを持っています – Raj

+0

jarファイルからロードされたクラスと直接ロードされたクラスに対して異なるClassLoaderがある場合は、自分でチェックしてください。 URLを返すクラスローダーでgetResource()関数を使用することもできます。URLから、クラスがjarからロードされたかどうかを確認できます。ちょうどそれと一緒に遊ぶ。 – Daniel

1

私はVisualVMを試しましたが、高性能アプリケーションにはそれほど有用ではありませんが、Javaで書かれていて非常に効率的ではありません。 (つまり、アプリケーションの監視よりも効率が悪い場合は、VisualVMをCPUまたはメモリの最大のコンシューマと見なします)

VisualVMは、試みているアプローチを使用します。 ;)

私はYourKitを使用して、これが一般的な問題に役立つことがわかります。これで十分です。コードから特定のセクションのみを含むようにプロファイリングをオン/オフするオプションがあります。これは、すべてのプロファイリング作業がネイティブエージェントで行われるため、独自のヒープを使用しないため、アプリケーションの速度をあまり低下させないため、より効率的です。

低レイテンシープログラミングのためにYourkitが十分でない場合、私は特注のパフォーマンステストを作成し、アプリケーションの主要な段階でアプリケーションの時間を有効にできるようにします。このアプローチは軽量で実行システムで使用することができ、運用システムで何が起きているかを見ることができます。

関連する問題