特定のクラス ファイルの Java プロジェクト クラス パス全体をスキャンする Ant タスクがあります。
この方法は非常に素朴です。
- 検索パスのルートに File オブジェクトが作成され、クラス ファイルが再帰的に検索されます。
- クラス ファイルごとに、CURRENT ClassLoader (this.getClass.getClassLoader) と loadClass() を使用してクラスをロードします。
- ロードされたクラスが特定のクラスの instanceOf であるかどうかを確認します。
奇妙なことに、JRE 起動タブで「Separate JRE」を選択してデバッグ モードでビルドを実行すると、ビルドに約 8 秒かかります。「ワークスペースと同じ JRE で実行する」を選択すると、ビルドに約 40 秒かかります。
私のプロジェクトには、10K 程度のクラス ファイルも含まれています。デバッグ モードでビルドを一時停止すると、ほとんどの時間が loadClass() で無駄になっていることが明確に示されます。
私の推測では、「Separate JRE」により、ビルドが最小限のクラスパスで実行されるため、クラスのロードプロセスが高速になると思います..? でもあまり意味がない..
誰かがこの件について手がかりを持っていますか?
前もって感謝します。