モバイル環境でのゲームなど実時間性を重視する場 合,ガベージコレクション (GC)[1]の実行によるプロ グラムの停止時間が問題となる. インクリメンタル GCは,GC処理によるユーザプ ログラムの停止時間を短縮するために,GCの処理を分 割する.しかし,分割により,リードバリアやライト バリア [2]のような,ユーザプログラムによるオブジェ クトの変更を検知する機構が必要になり,オーバヘッ ドが発生する. 世代別 GC[3] は,オブジェクトの生存,すなわち, ユーザプログラム中で使われているかの判別 (走査)の 対象を短寿命のオブジェクト (新世代)に限定すること で停止時間を短くする.Treadmill GC[4]は,4つの双 方向リストを利用してオブジェクトを管理する.リス トの繋ぎ替えにより,物理的にオブジェクトを移動さ せずにメモリを管理する.この手法では,ライトバリア に比べ処理に時間のかかるリードバリアが不要である. 世代別GCにTreadmill GCの考えを取り入れたOpportunistic Treadmill GC[5]がある.この手法はメモ リ領域を新世代領域と旧世代領域に分割し,走査の必 要がないオブジェクトを走査対象から外すことで,走 査すべきオブジェクトの数を減らす.また,リードバ リアを必要としない.しかし,メモリ領域が大きく不 足した時は,長寿命のオブジェクト (旧世代)の走査も 必要となる. 本研究では,Opportunistic Treadmill GCを拡張し, メモリ領域が不足した時,旧世代を分割し,一定数のオ ブジェクトを新世代に加え,インクリメンタルに走査す ることで最大停止時間を減らす.本手法を Caterpillar GCと呼ぶ.本稿では Caterpillar GCを提案し,実装 と動作実験の結果を述べ,考察する.
[1]
Rafael Dueire Lins,et al.
Garbage collection: algorithms for automatic dynamic memory management
,
1996
.
[2]
Henry G. Baker,et al.
The treadmill: real-time garbage collection without motion sickness
,
1992,
SIGP.
[3]
Chris J. Cheney.
A nonrecursive list compacting algorithm
,
1970,
Commun. ACM.
[4]
Martin Hirzel,et al.
Data layouts for object-oriented programs
,
2007,
SIGMETRICS '07.
[5]
Darko Stefanovic,et al.
A comparative performance evaluation of write barrier implementation
,
1992,
OOPSLA '92.