1

特定のクラス ファイルの Java プロジェクト クラス パス全体をスキャンする Ant タスクがあります。

この方法は非常に素朴です。

  • 検索パスのルートに File オブジェクトが作成され、クラス ファイルが再帰的に検索されます。
  • クラス ファイルごとに、CURRENT ClassLoader (this.getClass.getClassLoader) と loadClass() を使用してクラスをロードします。
  • ロードされたクラスが特定のクラスの instanceOf であるかどうかを確認します。

奇妙なことに、JRE 起動タブで「Separate JRE」を選択してデバッグ モードでビルドを実行すると、ビルドに約 8 秒かかります。「ワークスペースと同じ JRE で実行する」を選択すると、ビルドに約 40 秒かかります。

私のプロジェクトには、10K 程度のクラス ファイルも含まれています。デバッグ モードでビルドを一時停止すると、ほとんどの時間が loadClass() で無駄になっていることが明確に示されます。

私の推測では、「Separate JRE」により、ビルドが最小限のクラスパスで実行されるため、クラスのロードプロセスが高速になると思います..? でもあまり意味がない..

誰かがこの件について手がかりを持っていますか?

前もって感謝します。

4

0 に答える 0