著者
平岡 慶子 小寺 信治 寺島 元章
出版者
一般社団法人情報処理学会
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.44, no.2, pp.36, 2003-02-15

使用中データオブジェクトをヒープの一端にそれらの配置順序を保存して再配置する圧縮方式(mark-and-compact )に基づいた三世代ガーベッジコレクションの実装とその評価について述べる.圧縮方式のガーベッジコレクション(GC )ではヒープ上での世代の序列が永久に変化しないため,各世代は単にヒープのアドレスで区分できる.そこで,GC はGC 対象領域と呼ぶヒープ中の1 区画を決めることで,3 つのオブジェクト世代に対して包括的かつ効率的に行うことができる.隣接したGC間で消費された領域には新しい世代のオブジェクトがあり,それをGC 対象領域とするのが新世代GC である.1 回のGC 経験回数で殿堂入りした新古世代オブジェクトはその総量が閾値を超えるとGC により古世代オブジェクトとなる.このときのGC 対象領域は新世代と新古世代のオブジェクトが存在する連続した区画となる.新世代GC と異なるのは区画が大きくなるだけである.なお,古世代はヒープが枯渇しない限りGC の対象とはならない.また,新古世代オブジェクト量を調整するための新世代領域の動的変更機能についても述べる.We describe implementations and evaluation of three-generational garbage collection based on a sliding compaction (mark-and-compact)scheme that moves data objects being in use toward an end of a heap preserving their allocated order.The GC based on the sliding compaction scheme preserves the allocated order of generations as a group of data objects,so that the generations are simply classi fied according to their addresses of the heap.Our generational GC processes three generations efficiently and collectively by choosing a continuous space being subjected to GC from the heap.The GC for a young generation (minor collection) chooses the space that has been consumed since the last GC invocation and contains newest data objects.The objects that were subjected to the process of a single GC invocation changes to an old generation.The old generation is processed by the GC if its amount exceeds a prescribed value,and then changes to the oldest generation.This GC (major collection)chooses the continuous space that contains both the young and the old generations that is larger than the space for the minor collection.The oldest generation is free from the GC provided that the heap is not full of objects.Our generational GC also adopts dynamic adjustment of the space for the minor collection in order to reduce the amount of the old generation that affects the GC performance largely.