インタビューの要約のJavaガベージコレクション

まず、いわゆるGC

GCは、ガベージコレクション手段(Gabageコレクション)です。

これらのオブジェクトが唯一減少していない場合は増加落ちる私たちは山に投げ込まれている多くのオブジェクトの開発で作成され、その後、ヒープ領域はすぐに疲れになります。だから我々はいくつかの役に立たないオブジェクトを一掃する必要があります。

第二に、オブジェクトが死ん権利であります

参照されたオブジェクトがnullに設定されている場合は、ガベージコレクタがすぐにリリースする場合、メモリは?オブジェクトによって占有さ
れていません。オブジェクトの回復はプロセスであり、このプロセスは、オブジェクトを復活させることができます。ガベージコレクションは、リカバリを開始する際Zhibuding、不明です。

対象の死亡におけるJavaは二つの方法で決定されます。
参照カウント
到達可能性分析
を参照してください:https://blog.csdn.net/weixin_44026997/article/details/104312276

第三に、回収ゾーンの方法

メソッド領域は、スタック内にない、それはゴミになりますか?

jdk1.7では、メソッド領域Permanent世代は、恒久的に自分自身を代入すると、ごみのリサイクルの概念の製品であり、回収方法は、フルGCのタイムゾーンになります。

永久代理が追加MaxMetaspaceSizeパラメータは、ガベージコレクションのため、キャンセルされたが、もののjdk1.8に、とき死ぬクラスとクラスローダはメタデータに設定された値「MaxMetaspaceSize」パラメータに到達するために使用されます。

したがって、メソッド領域は、再利用されるであろう。

第四に、ガベージコレクションアルゴリズム

マーク-スイープアルゴリズム
の複製アルゴリズム
マーク-照合アルゴリズム
世代コレクションアルゴリズム

4.1マーク-スイープアルゴリズム
マーク-クリアは最も基本的なコレクションアルゴリズムを検討しました。そのアイデアは明らかその後、最初のマークにあります。リサイクルする目的は、少なくとも二つのマーカーです。
ここに画像を挿入説明

これは、2つの主要な欠点があります。

効率的ではないが
、メモリの断片化を大量生産する
メモリ空間と呼ばれるメモリの断片化を比較的、連続した領域に大きなセグメントの欠如を断片化されます。突然大きなオブジェクトのであれば、店に十分な大きさの連続したスペースを見つけることはありませんので、もはやGC一度トリガされなければなりません。
ここに画像を挿入説明
4.2コピーアルゴリズムは、
複製アルゴリズムは、メモリすなわちA、Bを想定している二つの領域に分割し、2分割されていることを考えました。

各被験者の後、彼らB領域へのA領域が一杯になる領域A、コピー生き残ったオブジェクトのすべてのPUT、その後、Aエリアを空にします。

次のオブジェクトは、全体領域Bに配置された領域Bが満杯であるなど、サバイバル領域Aを配置する複製オブジェクト、領域B、次に空になります。

この方法で完全なガベージコレクションへのシフトを前後に。

利点は何のスペースデブリではありません、欠点は、それぞれが半分しかメモリを得ることです。

欠点は、(古い環境の年など)があまりにも多くのものをコピーする必要があり、被写界の高い生存率で、効率が下がるということです。

ここに画像を挿入説明
4.3マーク-照合アルゴリズムの
マーク- 「マーク」相と仕上げアルゴリズム「マーク-クリーンアップ」同じマークの。違いは、その死を直接クリーンアップターゲットが、メモリに移動するために一緒にそれらすべてを入れ、その後、一緒にクリーンアップしませんです。
ここに画像を挿入説明
4.4世代コレクションアルゴリズム
世代コレクションアルゴリズムは、実際には何も新しいが、オブジェクトをブロックすることにより、生存率ではありませんし、適切な収集アルゴリズムを選択します。

Javaは世代コレクションアルゴリズムで使用されています。

低生存率は、収集するために、コピーアルゴリズムを使用して、若い世代と呼ばれ、オブジェクト同士。

ソートアルゴリズム - スイープやマーク - 高生存率は、古い時代として知られ、一緒にマークの使用をオブジェクト。

1)。新世代(若い世代)

新世代の目標は、すべての新しく生成されたオブジェクトは、新しい世代の最初にあり、通常の状況下では、これらのオブジェクトの短いライフサイクル、クイックOFFとして収集することです。1:8に記載の新世代のメモリエデン領域に1の比率二つ生存(survivor0、survivor1)領域、エデン領域に生成されたオブジェクトの最も。ガベージコレクション、survivor0領域にコピーライブオブジェクトをedenが最初の地区の間に、そしてその後、エデンゾーン領域とsurvivor0生存コピーオブジェクトsurvivor1エリアへ、そして空にエデン、survivor0エリアもいっぱいあるエデンゾーンを、空にsurvivor0面積を保ち、あるsurvivor0面積は、この時間survivor0領域が空である場合、役割survivor0エリアとsurvivor1面積を(すなわち、次のごみはエデンエリアとsurvivor1ゾーンの回復をスキャンします)を切り替える、など空である、と。survivor1記憶領域は領域とsurvivor0面積edenがライブオブジェクトに対して十分でないとき、特に、それは古い時代に上に直接置かライブオブジェクトになります。古い年が一杯になった場合、それはFullGCをトリガする、新世代である、古い年はリサイクルされています。メモ、GC新生代もMinorGC呼ばれ、発生のMinorGC頻度が比較的高く、そのためのみトリガーエデン領域が満杯である必要はないです。

2)古いの(旧世代)

旧店舗の上記のようなオブジェクトがガベージコレクションの後にN回を通り抜けたとして、対象物の長寿命サイクルの一部です古い時代に配置される新しい世代にまだ生きています。また、古い時代の記憶にも新しい世代よりもはるかに大きい(およそ比は1:2)、ときに、古い年間のフルトリガー主なGC(フルGC)、オブジェクトの古いは、長い時間を生き延びたので、比較的低いFullGCの発生頻度。

3)永続的な世代(Permanent世代)

主なJavaクラスやメソッドなどの静的ファイルの永続的な世代を記憶するために使用されます。ガベージコレクションに対して有意な影響の永続的な世代が、いくつかのアプリケーションは、動的に生成された、または実行を格納する空間を比較的大きく永久的な世代を設定するには、この時間が必要で、このような反射、動的機関、CGLIB及び他のバイトコード・フレームワークの使用など、いくつかのクラスを呼び出すことができる場合新しいクラス中。

公開された114元の記事 ウォン称賛16 ビュー10000 +

おすすめ

転載: blog.csdn.net/weixin_44026997/article/details/105164687