2

カスタム クラスローダーを使用して、いくつかの Java クラスをロードしています。これらのロードされたクラスからいくつかのメソッドをループで実行する必要があります。ループの反復ごとに、すべてのクラス (すべての静的フィールド) を新たに初期化する必要があります。各反復で新しいクラスローダーを使用しない場合の実行時間よりも、各反復で新しいクラスローダーを使用すると、実行時間が 3 倍遅くなることが測定されました。

ロードされたクラスを新しいクラスローダーでロードせずに初期状態にリセットできますか?

または、異なるクラスローダーで同じクラスを繰り返しロードする速度を上げる方法はありますか?

4

2 に答える 2

2

クラスを新しいクラスローダーでロードすると、JMV はほぼ確実にバイト コードを再コンパイルする必要があります。それまでは、新しくロードされたクラスの最初の使用は遅くなります。

これらのクラスは変更できないライブラリ コードだと思いますか? このようにクラスを使用しなければならないという事実は、設計に欠陥があることを示唆しているからです。

于 2012-04-21T21:05:59.203 に答える
0

頭のてっぺんから:リフレクションを使用してクラスの初期状態のスナップショットを撮り、それを復元できますか?

于 2012-04-23T15:05:03.033 に答える