メモリリークとは?
メモリリークとは、動的に確保した記憶領域を解放し忘れ、使われないまま占有され続ける不具合。1回あたりの量が小さくても長時間稼働するサーバでは蓄積し、やがて空き領域の不足やページングの多発を招いて性能低下や異常終了に至る。
応用情報技術者試験の過去問では2回出題されています(2020年度〜2021年度)。
めもりりーく
メモリリークの意味
動的に確保した記憶領域を解放し忘れ、使われないまま占有され続ける不具合。1回あたりの量が小さくても長時間稼働するサーバでは蓄積し、やがて空き領域の不足やページングの多発を招いて性能低下や異常終了に至る。
メモリリークの具体例
数日は正常でも週末に応答が急激に悪化する障害では、メモリ使用量の時系列グラフが右肩上がりの階段状になっていないかを見る。再起動で一時的に直り、時間経過でまた悪化するという再現性は、リークを強く示唆する典型的な兆候である。
メモリリークは試験でどう引っ掛けられる?
ガーベジコレクションがある処理系でも、参照が残り続ければ回収されないためリークは起きる。またフラグメンテーションは「解放済みだが小片化して使えない」状態であり、「解放されていない」リークとは原因も対処も異なる。
メモリリークと関連する用語
メモリリークが出た過去問
記憶領域の動的な割当て及び解放を繰り返すことによって、どこからも利用できない記憶領域が発生することがある。このような記憶領域を再び利用可能にする機能はどれか。
正解:ガーベジコレクション
要点:ガーベジコレクションは不要領域を自動回収し再利用する
ガーベジコレクションは、動的に確保された領域のうちどこからも参照されなくなったものを自動的に検出し、再利用可能な空き領域として回収する機能である。参照されない領域が残り続けるメモリリークを防ぐ役割をもつ。
出典:令和2年度 10月 応用情報技術者試験 午前 問16(IPA)プログラム実行時の主記憶管理に関する記述として、適切なものはどれか。
正解:プログラムが使用しなくなったヒープ領域を回収して再度使用可能にすることを、ガーベジコレクションという。
要点:ガーベジコレクションは不要ヒープ領域の自動回収
ガーベジコレクションは、動的に確保されたヒープ領域のうち、どこからも参照されなくなった領域を自動的に回収して再利用可能にする機能である。JavaやC#などの実行環境が備えており、解放漏れによるメモリリークを防ぐ。
出典:令和3年度 春期 応用情報技術者試験 午前 問18(IPA)
最終更新:2026-08-25/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。