平成29年度 春期16テクノロジ系

基本情報 平成29年度 春期 問16:テクノロジ系に関する問題

メモリリークの説明として, 適切ながものはどれか。

  • aOS やアプリケーションのバグなどが原因で, 動作中に確保した主記憶が解放さ れないことであり, これが発生すると主記憶中の利用可能な部分が減少する。正答
  • bアプリケーションの同時実行数を増やした場合に, 主記憶容量が不足し, 処理 時間のほとんどがページングに費やされ, スループットの極端な低下を招くこと である。
  • c実行時のプログラム領域の大きさに制限があるときに, 必要になったモジュー ルを主記憶に取り込む手法である。
  • d主記憶で利用可能な空き領域の総量は足りているのに, 主記憶中に不連続で散 在しているので, 大きなプログラムをロードする領域が確保できないことである。 ーー
正答:AOS やアプリケーションのバグなどが原因で, 動作中に確保した主記憶が解放さ れないことであり, これが発生すると主記憶中の利用可能な部分が減少する。

AI解説(初心者・標準・上級)

理解度に合わせて3レベルの解説を無料で読めます。

初心者向けまずはここから。やさしく要点を解説

答えは a です。

メモリリーク=メモリを使い終わったのに片付け忘れること。

部屋(メモリ)に物を出して使ったあと、戻し忘れて散らかし続けると、だんだん空きスペースがなくなって動けなくなる…そんなイメージです。プログラムを長く動かすほど使えるメモリが減って、最後はフリーズします。

👉 覚え方:リーク=「漏れる」。メモリがじわじわ漏れて減っていく

ほかの選択肢:b は同時実行が多すぎて主記憶が足りずページングだらけ=スラッシング/c は必要なときだけ呼び出すオーバーレイ/d は空きはあるのにバラバラに散っている=フラグメンテーション(断片化)

標準試験対策の基準レベル

なぜこれが正解か

正解は a。メモリリークとは、OSやアプリケーションのバグ等が原因で動的に確保した主記憶領域が使用後に解放されない現象。malloc/freeやnew/deleteの不整合、参照を保持し続けるなどが典型原因。発生すると利用可能メモリが時間とともに減少し、長時間稼働で性能劣化・最終的にメモリ不足エラーを招く。

各選択肢の解説

  • a:確保した主記憶が解放されない=メモリリーク → 正解。
  • b:同時実行数増加→ページングで処理時間消費→スループット低下=スラッシング
  • c:プログラム領域に制限がある中で必要モジュールを主記憶に取り込む手法=オーバーレイ
  • d:空き総量はあるが不連続で大きな領域が取れない=フラグメンテーション(断片化、特に外部フラグメンテーション)。

覚え方・ひっかけ注意

a,b,c,d はすべてメモリ関連用語で紛らわしい代表例。「リーク=解放忘れ」「スラッシング=ページング地獄」「オーバーレイ=必要時ロード」「フラグメンテーション=断片化」の4セットで暗記。長時間稼働サーバの再起動が必要になる原因の代表がリーク。

上級誤答論破・背景理論まで深掘り

理論的背景

メモリリークは到達可能だが使用されないオブジェクト(論理リーク)と、到達不能で解放もされないオブジェクト(古典的リーク)に大別される。C/C++では後者、JavaやC#等のGC言語では前者が主流(コレクションへの参照残存、リスナ解除漏れ、staticフィールド経由の保持等)。GCはアルゴリズム的に「到達不能なメモリ」しか回収できないため、論理リークはGCでも防げない。

検出ツールと手法

  • Valgrind / AddressSanitizer:C/C++のリーク・未初期化アクセス検出。CIに組込む事例多数。
  • JVM:Heap Dump + Eclipse MAT、JFR、jconsole。
  • .NET:dotMemory、CLR Profiler。
  • 本番監視:RSS/VSZ の継続増加、`/proc/<pid>/smaps` の経年変化、APMツール(Datadog, New Relic)のヒープ可視化。

関連現象との区別

  • スラッシング:仮想記憶のページング処理がCPU時間を食い潰し、有効処理が進まない状態。多重度を下げる/物理メモリ増設で解消。
  • フラグメンテーション:内部(割当単位より小さい要求が領域を無駄にする)と外部(隙間が散在)。コンパクション・スラブアロケータ・bitmap管理で対策。
  • オーバーレイ:主記憶が小さい時代の手動メモリ管理。現代は仮想記憶+デマンドページングで自動化されほぼ消滅。

試験での位置づけ

FE「OS/メモリ管理」分野の頻出語。応用情報・高度では、リーク・スラッシング・フラグメンテーションの症状からの逆引きで出題される。組込み・サーバ運用では「再起動運用」「OOM Killer」「サーキットブレーカ」とセットで知識が必要。

選択肢の発展補足

bのスラッシングはワーキングセットモデル(Denning)が古典理論。多重度をMin(CPU待ち, ワーキングセット合計≤物理メモリ)で制御する。dの外部フラグメンテーションはバディシステムスラブアロケータ(Linuxカーネル)で軽減される。

出典・引用について

出典:IPA(情報処理推進機構)公式 基本情報技術者試験 平成29年度 春期16/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。

テクノロジ系の他の過去問

1
テクノロジ系
2
テクノロジ系
3
テクノロジ系
4
テクノロジ系
5
テクノロジ系

あなたの弱点を診断して、合格までの最短ルートを

この分野を連続演習し、AIがあなたの弱点を分析。合格ナビなら基本情報の過去問を解きながら学べます。