正答3
解説
正解は3です。
フラグメンテーション(断片化)とは、メモリの獲得と返却を繰り返すうちに、空き領域が小さく細切れになる現象です。
特に大きさの異なる領域を扱うと、空き領域の間に使用中の領域がはさまり、大きな連続領域を取れなくなります。
【選択肢別解説】
1:× 可変長ブロック方式では、大きさの異なる領域の獲得・返却を繰り返すうちに、空き領域が細切れになります。
フラグメンテーションは発生しないのではなく、発生しやすい方式です。
2:× 固定長ブロック方式は同じ大きさのブロックを使い回すため、獲得と返却が速いという前半は正しいです。
しかし空き領域の細切れは可変長方式より起こりにくいので、「発生しやすい」という後半が誤りです。
3:○ 断片化が進むと、空き領域の合計は十分でも、必要な大きさの連続領域が見つからず獲得できないことがあります。
これがフラグメンテーションの代表的な影響です。
4:× 返却のたびにガーベジコレクションを行う必要はありません。
頻繁に行うと処理の負荷が大きくなるため、空き領域の整理は必要に応じて行うのが一般的です。
【ポイント】
固定長方式は、ブロックの中に使われない余りが出ることはあっても、空き領域の細切れは起こりにくい方式です。
可変長方式は無駄が少ない一方で、断片化が起こりやすい方式です。