テクノロジ系応用問題
ガベージコレクション(GC)を持つ言語ランタイムにおいて、短命なオブジェクトを大量に生成し続けるプログラムを実行した場合、世代別GCではどのような動作が期待されるか。
A.すべてのオブジェクトが長寿命世代に昇格し、フルGCが頻繁に発生してパフォーマンスが低下する。
✗ 世代別GCの目的は短命オブジェクトを新世代で効率的に回収することであり、すべてが長寿命世代に昇格するわけではありません。
B.短命オブジェクトは新世代領域で高速に回収され、長寿命世代へのオブジェクト昇格が抑制される。← 正解
✓ 正解です。世代別GCは短命オブジェクトが多いという経験則に基づき、新世代を小さく高速にGCして長寿命世代への負荷を減らします。
C.GCが一切動作せず、ヒープが枯渇してOutOfMemoryErrorが即座に発生する。
✗ GCが動作しないわけではなく、世代別GCは積極的に新世代領域を回収するため、ヒープ枯渇は通常抑制されます。
D.参照カウント方式に自動的に切り替わり、オブジェクト生成のたびにカウントが加算される。
✗ 参照カウント方式は世代別GCとは別の方式であり、実行中に動的に切り替わる仕組みは一般的にありません。