JVMは5つのヒープ領域に注意します

JVMは5つのヒープ領域に注意します

JVMでは、ヒープ領域が最優先されます。前回の記事の調査から、スタック領域にガベージコレクションがないことがわかりました。したがって、よく参照されるガベージコレクションは、実際にはヒープ領域のデータです。ここでは、伝説的な新世代、旧世代、永続的な世代(メタスペース)が表示されます。Kaige Java(kaigejava)は、誰もが一緒に学ぶことを歓迎します。

ヒープ:

JVMインスタンスのヒープメモリは1つだけであり、ヒープメモリのサイズを調整できます。クラスローダーがクラスファイルを読み取った後、クラス、メソッド、および定数変数をヒープメモリに配置して、実行者の実行を容易にするためにすべての参照タイプの実際の情報を保存する必要があります。ヒープメモリは次の3つの部分に分かれています。

ヒープメモリパーティション:

ヤングジェネレーションスペースヤング/ニュー

テニュア生成スペース老階旧/テニュア

パーマネントスペースパーマ

Java 7より前のヒープメモリの概略図:

0kivWHDU4Se


ショートバージョンプロセス:

0kivWHfEwq0

0kivWHwtvEm


新生エリアとは、クラスが生まれ、成長し、死ぬエリアであり、クラスが生成され、適用され、最終的にゴミ収集者によって収集されて、その寿命が終わります。

新生児エリアは、エデンスペースとサバイバースペースの2つの部分に分かれています。すべてのクラスはエデンパークで新しいです。

エリア0(サバイバー0スペース)とエリア1(サバイバー1スペース)の2つのサバイバルエリアがあります。

エデンパークのスペースが使い果たされると、プログラムはオブジェクトを作成する必要があります。JVMのガベージコレクターはエデンパークでガベージコレクション(マイナーGC、ライトGCまたはYGCとも呼ばれます)を実行するため、エデンパークは他のオブジェクトによって使用されなくなります。参照されたオブジェクトは破棄されます。次に、エデンの園にある残りのオブジェクトは、生き残ったゾーン0(fromゾーンとも呼ばれます)に移動します。生き残ったエリア0も満員の場合、そのエリアは再​​びゴミ収集され、エリア1(エリアとも呼ばれます)に移動されます。

地区1も満員の場合はどうなりますか?15回のYGCの後、存続エリア1もいっぱいになります。この時点で、JVMはデータをリタイアメントエリアに移動します。リタイアメントエリアも満員の場合は、この時点でMajorGC(フルGCインスペクションFGCとも呼ばれます)が実行されます。フルGCを実行して、高齢者ケアエリアのメモリをクリーンアップします。エージングされた領域でフルGCを実行した後、オブジェクトをまだ保存できないことが判明した場合、この時点でOOM(OutOfMemoryError)例外が発生します。

java.lang.OutOfMemoryErrorの場合:javaヒープスペースが異常です。これは、Java仮想マシンのヒープメモリが十分でないことを示しています。主な理由は2つあります。

1:java仮想マシンのヒープメモリ設定は十分ではありません。パラメータ-Xmsおよび-Xmxを使用して調整できます。

2:コード内に多数の大きなオブジェクトが作成され、ガベージコレクターで長期間リサイクルできません(メモリアドレスが参照されます)

あなたの才能があなたの野心をサポートできないとき、あなたは落ち着いて学ぶべきです。

あなたの能力があなたの目標をコントロールできないとき、あなたは落ち着いて練習するべきです。

夢は衝動的ではなく、沈殿と蓄積です。綴ることができる美しさだけが、待ち望まれていなかった輝きです。機会は常に最も欲しがる人に委ねられています。心の奥底であなたと話し、あなたが欲しいものを自問することを学びましょう。人生、落ち着いて学び、辛抱強く落ち着き、自分にそれを与え、そしてお互いを励まし合ってください!


おすすめ

転載: blog.51cto.com/kaigejava/2541126