メモリリークとは?めもりりーく
メモリリークとは、動的に確保した記憶領域を解放し忘れ、使われないまま占有され続ける不具合。一回の量が数キロバイトでも、長時間動き続けるサーバでは要求のたびに積み上がり、やがて空き不足とページングの多発を招いて性能劣化や異常終了に至る。単体テストでは再現せず、稼働時間に比例して現れるのが特徴である。
最終更新:2026-10-06
この語が出る過去問を解く →背景
確保と解放を人が対で書く言語では、正常系だけを追って解放を書くと、例外や早期リターンの経路で解放が抜ける。短時間で終わるバッチなら終了時にまとめて回収されるので誰も困らなかったが、常駐プロセスが何週間も動き続ける運用が当たり前になった時点で、この抜けが表面化した。無停止で動かしたいという要求と、資源の後始末を人が書くという実装様式の摩擦から生まれた不具合類型である。
具体例
再起動すると直り、数日でまた重くなるという障害では、メモリ使用量の時系列が階段状に右肩上がりになっていないかをまず見る。JavaならVisualVMやjmapでヒープダンプを取り、世代を越えて生き残るオブジェクトの参照元をたどる。C系ならValgrindのmemcheckが未解放ブロックの確保位置を示す。
試験での引っ掛け
ガーベジコレクションがあれば起きないという理解が最も危ない。到達可能な参照が残っていれば回収対象にならず、キャッシュやリスナ登録の解除漏れがそのまま蓄積する。またフラグメンテーションは「解放済みだが小片化して使えない」状態であり、「解放されていない」リークとは原因も対処も別である。
関連用語
出た過去問
出典:令和2年度 10月試験 応用情報技術者試験 午前 問16(IPA)解説で登場
記憶領域の動的な割当て及び解放を繰り返すことによって、どこからも利用できない記憶領域が発生することがある。このような記憶領域を再び利用可能にする機能はどれか。
正解:ガーベジコレクション
要点:ガーベジコレクションは不要領域を自動回収し再利用する
ガーベジコレクションは、動的に確保された領域のうちどこからも参照されなくなったものを自動的に検出し、再利用可能な空き領域として回収する機能である。参照されない領域が残り続けるメモリリークを防ぐ役割をもつ。
出典:令和3年度 春期 応用情報技術者試験 午前 問18(IPA)解説で登場
プログラム実行時の主記憶管理に関する記述として、適切なものはどれか。
正解:プログラムが使用しなくなったヒープ領域を回収して再度使用可能にすることを、ガーベジコレクションという。
要点:ガーベジコレクションは不要ヒープ領域の自動回収
ガーベジコレクションは、動的に確保されたヒープ領域のうち、どこからも参照されなくなった領域を自動的に回収して再利用可能にする機能である。JavaやC#などの実行環境が備えており、解放漏れによるメモリリークを防ぐ。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。