2009-04-15 9 views

答えて

3

プロファイラを使用する必要があるとします。または、計測インターフェースを使用するもの。

どれくらい安定しているかわかりませんが、BTraceがあります。これはDTraceのJavaバージョンのようなものです。

BTraceはJavaプラットフォーム用の安全で動的なトレースツールです。 実行中のJavaプログラムを動的にトレースするためにBTraceを使用できます。 BTraceはターゲットアプリケーションのクラスを動的に計測し、トレースコードを注入します(「バイトコードトレース」)。トレースコードはJavaプログラミング言語で表現されています。

開発マシンでこれを実行していて、イベント(ロードされるリソース)の数があまり多くない場合は、デバッガでブレークポイントを設定するだけで済みます。

+0

リンクが死ん –

+0

@FastSnailである:それは彼らがのGithubに移動するようです。リンクが更新されました。 – Thilo

2

リソースはURLとして提供されています。だから、私は "純粋な" Javaでそれを行うと思います:をコピーしてURLStreamHandlerのバージョンにコピーするカスタムClassLoaderをインストールします。監視コードをストリームハンドラに入れ、元のものに転送します。あなたが試すことができますLinux環境で

1

lsof -p <jvm pid> 

それはあなたの指定したPIDに関連付けられたプログラムで使用される記述子のリストを提供します。

More Info

+2

問題は、1回だけ開くことができる単一のjarファイルから多くのリソースをロードできることです。 – erickson

+0

私は同意します。その場合、最良の選択肢はClassLoaderソリューションと一緒に行くことだと思います –

2

あなたは、機器へのロードを行うクラスローダークラスをInTraceを使用することができます。 Sun JVMのために

、私は次を使用することをお勧めし適切なクラスをトレースするパターンを含める:

  • クラスローダ
  • URLClassPath
  • ローダー
1

がに技術のカップルが存在しますクラスローディングの問題をデバッグしてください。ここではこれらの技術をまとめたJRebelのクリエイターから良いスライドは以下のとおりです。Do you really get class loaders?

関連する問題