1

(コンテナ-)アプリケーションが、他のいくつかの/サブアプリケーションをホストするために複数のクラスローダーを作成していると想像してください。

コンテナアプリ用の-say-rootクラスローダーがあります。サブアプリケーションがロードされるたびに、コンテナはこのアプリケーションの新しいクラスローダーを作成します。

一部のサブアプリケーションは同じクラスを使用しますが、コンテナのクラスローダーによってロードされなかったため、各サブアプリケーション(より良い:クラスローダー)はクラスAなどのコードをロードします。したがって、permspaceは2回入力されます。1回はサブアプリケーション用です。 #1とサブアプリ#2の場合は1回。

これは、太陽のホットスポット最適化にとって何を意味しますか?
同じ最適化がクラスAで2回、クラスローダーごとに1回発生しますか?
または、これを回避する「魔法」が組み込まれていますか?(最適化は一度行われます)
誰かがリンクを知っていますが、これは説明されましたか?

私はjdk1.6で出荷される太陽(サーバー)VMについて言及しています

4

2 に答える 2

0

これを証明するために指摘できる文献はありませんが、経験から、クラスが再ロードされると、メソッドが再コンパイルおよび再最適化されることがわかります。次を追加することでこれを観察できます。

-XX:+PrintCompilation

Javaコマンドラインに移動してアプリを実行します。これにより、コンパイルされているメソッドが正確にわかります。同じメソッドの出力が2回表示される場合は、再コンパイルされていることがわかります。クラスが再ロードされているかどうかわからない場合は、次を追加します。

-verbose:class

同じように。これにより、すべてのクラスロードイベントが表示されます。

于 2010-09-24T17:07:42.160 に答える
0

ちがいない。2番目のクラスローダーが1番目のクラスローダーと同じバイトコードをロードしたという保証はありません。

于 2010-09-25T02:25:01.597 に答える