21

Jdk 8 で実行するアプリでは、VisualVM を使用して、ロードされたクラスの使用状況とメタスペースの使用状況を追跡します。

アプリの実行中のある時点で、ロードされたクラスの数はそれ以上増加しませんが、プログラムの実行中にメタスペースのサイズが増加することがわかります。では、クラス以外に何がメタスペースに格納されているのでしょうか?

4

2 に答える 2

10

プログラムの実行中に、コードの一部が HotSpot の JIT コンパイラによって「ホット」と判断される場合があります。これにより、これらの部分がネイティブ コードに変換/コンパイルされ、他のコードがインライン化される場合もあります。このネイティブ コード表現はどこかに移動する必要があり、他のクラス メタデータと同じ場所 (メタスペース) に移動します。

これは、あなたが目にしている継続的な成長を説明しています。ホット パーツは、コードの一部が実行された回数の単純なメトリックを使用して、時間の経過とともに決定されます。時間の経過とともに、設定されたしきい値(デフォルトは 10000)に達すると、ますます多くのコードが JIT されます。-XX:CompileThreshold

于 2016-08-09T13:34:07.623 に答える