フレンド、PermGenとヒープとの違いとその意味
ヒープとパーマージェンの重要性、相違点、用途を教えてください。 また、どのクラスがそれぞれ読み込まれているか知っておくと良いでしょう。 JavaのVMの仕様に関連
説明 Punith
フレンド、PermGenとヒープとの違いとその意味
ヒープとパーマージェンの重要性、相違点、用途を教えてください。 また、どのクラスがそれぞれ読み込まれているか知っておくと良いでしょう。 JavaのVMの仕様に関連
説明 Punith
メモリ(ヒープ)は、世代別に管理されているか、または異なる年齢のオブジェクトを保持しているメモリプールです。世代がいっぱいになると、世代ごとにガベージコレクションが発生します。オブジェクトは若いオブジェクトの場合はyoung generation
に割り当てられ、幼児死亡のためにほとんどのオブジェクトがそこで死亡します。
新しいオブジェクトが作成されると、Young Generation
の一部であるエデンスペースに移動します。
オブジェクトがしばらくしてもまだ生きている場合は、オブジェクトが長く存在するtenured generation
に行きます。
オブジェクトがオーバープロセスまで存在すると仮定すると、オブジェクトはPerm Generation
に移動されます。 Java classes
はパーマネント世代に格納されます。
良いリンクがWhat does PermGen actually stand for?である
おかげで本当に役立つだろう。特にこのように好きですblog
まあ私は専門家ではありませんが、実行時にすべてのクラスがロードされる特別な場所のように、PermGemメモリはヒープ内にあります。したがって、クラスが多すぎる場合、PermGemはOutOfMemoryExceptionをスローします。また、ヒープは、Javaコード内にインスタンス化したオブジェクトを格納します。ここで、GCは、スタック内の実行中のスレッド内の変数によって参照されないオブジェクトを収集します。
それは本当ではありません。 PerGenはヒープスペースとは別のものです。 (これ)[https://blogs.oracle.com/jonthecollector/entry/presenting_the_permanent_generation] – Santosh
ええ、あなたが正しいことを確認してください。私はそうではないとは確信していませんが、分離して達成しようとしていたのはGCが永久データをチェックしないので、ヒープで彼が収集できるものをチェックするだけなので意味があります。 –
私はPermgenがヒープメモリ内のメモリ領域だと思います。これは、Stringを保持するような特別な目的のために作成されます。
作成されたすべてのオブジェクトがPermgenメモリを取得しないJDK 6以下のStringのような特殊なクラスラの場合のみです。
最新のJDKバージョン8以上では、Pergenは見つかりませんでしたが、Non Heapや他のさまざまなキャッシュメモリなどの新しいメモリが導入されました。
この関連する質問を参照してください:http://stackoverflow.com/questions/2070791/young-tenured-and-perm-generation/33994430#33994430 –