15

友達、

Heap と PermGen の意義、違い、用途を教えてください。また、それぞれにどのクラスがロードされているかを知っておくとよいでしょう。

Java VM 仕様に関する説明は非常に役に立ちます

ありがとうございます

4

5 に答える 5

22

メモリ(ヒープ)は、世代、または異なる年齢のオブジェクトを保持するメモリ プールで管理されます。世代がいっぱいになると、各世代でガベージ コレクションが発生します。オブジェクトは若いオブジェクトまたは の世代に割り当てられ、young generation幼児死亡率のため、ほとんどのオブジェクトはそこで死亡します。

新しいオブジェクトが構築されると、 の一部であるエデン空間に移動しYoung Generationます。

しばらく経ってもオブジェクトがまだ生きている場合、それはtenured generation長く生きているオブジェクトがある場所に移動します。

オーバー プロセスが存在するまでオブジェクトが存続することになっている場合、オブジェクトは に移動されPerm Generationます。Java classes永久世代に保存されます。

于 2012-06-13T07:25:40.420 に答える
2

PermGen は実際には何の略ですか? に良いリンクがあります。. このブログが特に気に入りました

于 2012-06-13T07:12:15.227 に答える
0

Permgen はヒープ メモリ内のみのメモリ領域だと思います。ストリングを保持するなどの特別な目的のために作成されます。

作成されたすべてのオブジェクトが Permgen メモリを取得するわけではありません。これは、JDK 6 以下の String などの特別なクラスのみです。

8 以上のような最新の JDK バージョンでは、Pergen は見つかりませんが、Non Heap やその他のさまざまなキャッシュ メモリなどの新しいメモリが導入されています。

于 2015-09-08T14:25:37.033 に答える
0

私は専門家ではありませんが、実行時にすべてのクラスがロードされる特別な場所のようなものであるため、PermGem メモリはヒープ内に存在します。したがって、クラスが多すぎる場合、PermGem は OutOfMemoryException をスローします。また、ヒープは Java コード内でインスタンス化したオブジェクトを格納します。GC は、スタック内の実行中のスレッドの変数によって参照されていないオブジェクトを収集します。

于 2012-06-13T07:12:49.350 に答える