» www.Giftbox.Az - Bir birindən gözəl hədiyyə satışı
ウィキペディアランダム
毎日カテゴリ
共有: WhatsappFacebookTwitterVK

世代別ガベージコレクション

世代別ガベージコレクション (: generational garbage collection) はガベージコレクションの手法のひとつである。別名として、ジェネレーション・スキャベンジング (: generation scavenging) とも呼ばれる。以下、ガベージコレクションをGCと省略する。

概要

ガベージコレクションを持つ言語上で動く実システムでは、経験上メモリオブジェクトの利用に、ある偏りが存在する。それは「計算途上で利用される一時オブジェクトは数が多く、かつすぐさま破棄される率が高い」「ある程度長く生存したオブジェクトは、以降も長く生存する率が高い」という傾向である。

この傾向に着目し、メモリ領域を2つの世代に分離する。

  • 第1世代 (young generation) に属するオブジェクトは小さな領域で高速な(コピーGC)を繰り返し、積極的に回収する。
  • 第2世代 (old generation) に属するオブジェクトは基本的に回収せず、システム全体のメモリが不足するようならマーク・アンド・スイープなどで整理する。

というルールを与える。そして第3のルールとして

  • 第1世代の回収をある一定回数生き延びたオブジェクトは第2世代に移動する。

を考えるのが世代別GCである。

世代別GCは汎用のガベージコレクションとしてバランスに優れており、また世代間移動のしきい値や第1世代領域のサイズなど、チューニングがしやすいこと、仮想記憶との相性が良いことなど、利点が多い。特にオブジェクト指向プログラミング言語との相性が良いため、Java (1.2以降[1]) や.NET FrameworkRuby (2.1以降) などに採用されている。.NET FrameworkではGeneration 0, 1, 2の3世代に分かれている[2]Pythonでは主に参照カウント方式によるライフサイクル管理がなされるが、補助的に(伝統的なマーク&スイープとは逆順の探索アルゴリズムによる)世代別GCを併用している[3][4]

脚注

  1. ^ , Internet Archive
  2. ^ ガベージ コレクションの基礎 | Microsoft Docs
  3. ^ 29.11. gc — ガベージコレクタインターフェース — Python 3.6.5 ドキュメント
  4. ^ Garbage Collection for Python

関連項目

ウィキペディア、ウィキ、本、library、論文、読んだ、ダウンロード、自由、無料ダウンロード、mp3、video、mp4、3gp、 jpg、jpeg、gif、png、画像、音楽、歌、映画、本、ゲーム、ゲーム。