jvmでクラスがロードおよび破棄されたときの追跡方法を教えてください。 jvmによって公開されているコールバックメソッドはありますか?クラスがロードされ、jvmで破棄されるときを追跡する方法は?
答えて
静的ブロックを使用してクラスのロードを検出することはできますが、クラスのアンロードは検出できません。 javaでは、システムクラスローダーを介してロードされたすべてのクラスはアンロードされず、他のクラスローダーを介してロードされたすべてのクラスは、クラスローダーがアンロードされたときにのみアンロードされます。あなたは、Javaを介してロードされたクラスを参照することを選択し追加することができます
static{
//execute when the class will be loaded
}
:破壊されたクラスについて
java -verbose:class
、私はわかりません。
この情報をアプリケーションに入れたいのですか、それとも外部から分析したいだけですか?後者の場合は、おそらくVisualVMを使用することができます。多分あなたの質問はこれに関連しています:Loaded classes in VisualVM。
command line option-verbose:class
をJavaプロセスに追加できます。これにより、ロードされた各クラスについての情報が表示されます。
静的コンストラクタでクラスの作成を追跡できます。そして、あなたはそれが私の心配である限り、破壊を追跡することはできません。クラスは、クラスをロードするために使用されたクラスローダーをgcが収集するときにのみアンロードされます。
あなたもこれを読んで興味があるかもしれない:another question on classloaders at StackOverflow
JRockit JVMを使用して[OK]をしている場合は、クラスがロードされ、クラスがアンロードされるときに、メソッドをコールバック与える以下のAPIを利用し、作ることができます。
getClassLibrary()
メソッドを使用するはずのJVMクラスをご覧ください。クラス名を与え、我々はイベントをクラスロードのリスナーを登録することができますclassLibraryオブジェクト上
など
は、Sun/OracleのJVMを使用している場合は、TraceClassLoading
とTraceClassUnloading
オプションを使用することができます。
java -XX:+AggressiveOpts -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+PrintFlagsFinal -version
これらのオプションがサポートされている場合は、-XX:+TraceClassLoading -XX:+TraceClassUnloading
を使用してJavaアプリケーションを実行します。あなたのJVMがサポートするオプションを参照するには、次のように使用します。
[Loaded ... from ...]
[Unloading class ...]
- 1. C++クラスでベクトルを宣言すると、それが破棄され、クラスのinstateが破棄されますか?
- 2. Luaで放棄されたメモリリークを追跡する方法は?
- 3. スレッドが破棄されると、変数は破棄されますか?
- 4. チェックオブジェクトが破棄され、新しいシーンがロードされる
- 5. ライターが破棄されたときにストリームが破棄されるのはなぜですか?
- 6. タグが付いたフラグメントを追加すると、親が破棄されても破棄されませんか?
- 7. 静的メンバーが作成され、破棄されるとき?
- 8. フラグメントを追加するとアクティビティが破棄されます
- 9. UIViewライフサイクルでビューが破棄されるときを知る
- 10. 親アクティビティーが破棄されたときにアクティビティーを保持する方法
- 11. アプリケーションが破棄されたときにサービスのバインドを解除する方法
- 12. PHPセッションがログアウトボタンで破棄される
- 13. アクティビティライフサイクルオブザーバ - アクティビティインスタンスがいつ破棄されるかを知る方法?
- 14. フラグメントが破棄されたときにバックグラウンドスレッドを終了する
- 15. アクティビティが破棄されたときにoverridePendingTransition()を呼び出す方法は?
- 16. zk:zkコンポーネントが破棄されたときにリスナーに通知する方法
- 17. サービスを提供するコンポーネントが破棄されると、サービスも破棄されますか?
- 18. Angularは、コンポーネントが破壊されたときにイベントハンドラとプロパティバインディングを破棄する方法
- 19. Prism.Forms:ナビゲートされたページを破棄する方法は?
- 20. 構造が破棄されるときにアクセスインスタンスが渡される
- 21. D3:スタイルを破棄してDIVにスタイルを追加すると、スタイルが破棄される
- 22. PHPセッションが破棄されたときに何かする
- 23. メイン関数に戻ったときにクラスの値が破棄される
- 24. セッションがコードシニターで破棄されます
- 25. ユニティ、クライアントオブジェクトが破棄される
- 26. 奇妙なエラーセッションが破棄される
- 27. ログアウト後にセッションが破棄される
- 28. セッションはCodeIgnitorで破棄されます
- 29. MongoError:トポロジが破棄されました(ドキュメントを見つけるとき)、インスタンスプールが破棄されました(ドキュメントを挿入するとき)
- 30. Windowsエクスプローラウィンドウを操作するとUDPパケットが破棄される
ここで2つの質問をしています。あなたは正確に何を学ぼうとしていますか、達成しようとしていますか?それを理解したら、それを最大限に活用した回答を受け入れてください。 – Frans