すべてのブート(コア)Javaクラス(Javaランタイム環境に属する)がJavaで使用するためにロード/初期化されているかどうかを確認する方法はありますか?
JREにはアクセスできるが実際のアプリケーションにはアクセスできないというまれな状況でこれを確認する必要があるため、メインアプリケーションが実行されて実行されるのを待つことはできません。
すべてのブート(コア)Javaクラス(Javaランタイム環境に属する)がJavaで使用するためにロード/初期化されているかどうかを確認する方法はありますか?
JREにはアクセスできるが実際のアプリケーションにはアクセスできないというまれな状況でこれを確認する必要があるため、メインアプリケーションが実行されて実行されるのを待つことはできません。
JVMは「必要に応じて」クラスをロードするため、ブートストラップクラスパス上の「すべて」のクラスがロードされるポイントは1つではありません。
とはいえ、1.5以降、Sun JVMは「クラスデータ共有」を使用して、特定のクラスのセットをプリロードします。どのクラスがロードされるかはわかりませんが、java.lang
パッケージ内のクラスに限定されていると思われます。
クラスがいつロードされるかを単に追跡したい場合は-verbose:class
、JVMの起動時にコマンドラインオプションを使用します。
あなたのコメントを読んだ(そして誤って私のクッキーを削除した)ので、私が言えるのは、JVMTIはあなたがやろうとしていることが何であれ、はるかに良い選択であることがほぼ保証されているということです。
しかし、JREクラスの変更に夢中になっている場合は、FileWriter
初期化中に設定される静的ブール変数を単純に追加してみませんか?