再起動が必要になるのはなぜ? OSとメモリ管理の仕組みを図解で理解する

PC を使っていれば、誰でも次のような場面に出くわすはずです。

  • PC は OS の更新などで再起動を要求することがある。“シャットダウンと起動”とは何が違うんだろう?
  • スマホを長時間使っていると挙動が怪しくなる。電源を切り直すと元気になる ─ なぜ?

どちらも「なんとなくやっている」だけで、改めて理由を説明できる人は少数です。けれども、根っこを辿ると 両方とも同じ理由 に行き着きます。

PC やスマホは、動いている間に OS(基盤ソフト)が “いま何を覚えているか” という状態を、メモリの上にどんどん積み重ねていきます。再起動はその積み重ねを 一度ゼロに戻して、最初から組み直す行為 です。そして「シャットダウン → 起動」と「再起動」は、Windows 10/11 では実は 同じではありません(後ほど §3-2 で詳説)。

本記事では、

  • そもそも メモリ とは何で、なぜ電源を切ると消えるのか(§1)
  • アプリは OS から メモリを借りて動いている こと(§2)
  • 再起動は実際 どんな段取り で進んでいるのか(§3)
  • 長時間使うと起きる メモリリーク とは何か(§4)
  • メモリ以外の リソースハンドル という落とし穴(§5)
  • アップデートで 再起動が必須になる 理屈(§6)
  • クラウドや開発の世界で広がる 再起動なしの仕組み(§7)
  • 自分の PC で観察するための コマンド集(§8)

を、専門知識ゼロからでも追えるように図解で順を追って解いていきます。

💡 Tip

本記事は「なぜソフトウェアはインストールしないと動かないのか?」「IPアドレスとは?」と並ぶ “PC のしくみシリーズ” の第 3 弾です。インストールが OS とアプリの握手、IP アドレスが ネットワーク側の住所 の話だとすれば、本記事は OS が時間とともに抱え込んでいく “状態” をテーマにします。前者の記事後者の記事 も合わせて読むと、PC の中で起きていることがほぼ俯瞰できます。

1. メモリの正体 ─ “作業机” と “本棚” の違い

「再起動するとなぜ直るのか?」を語るうえで、最初に押さえておきたいのが メモリ(PC が “今この瞬間” 使う作業机のようなもの) の性質です。なんとなく「容量を使い切るとパソコンが重くなる」と覚えている方も多いと思いますが、もう一段だけ仕組みに踏み込みます。

1-1. RAM は揮発性 ─ 電源が切れたら消える

PC の中には、データの入れ物が大きく分けて 2 種類あります。

  • RAM(メインメモリ) ─ 高速だが 電源を切ると中身が消える(揮発性)
  • SSD / HDD(ストレージ) ─ 低速だが 電源を切っても中身が残る(不揮発性)

机と本棚に喩えるとイメージしやすくなります。RAM は 作業机 で、いま広げている書類を瞬時に手に取れる代わりに、夜になって家を出るとき机の上は空っぽになります。SSD/HDD は 本棚 で、出し入れに少し時間はかかるけれど閉店後も中身は残ります。

再起動するとメモリの中身がリセットされる物理的な根拠 はここにあります。電源が一瞬でも切れる(または “そう振る舞う” 仕組みが走る)と、RAM が抱えていた一切の状態が消え、OS は本棚から必要な書類を読み直して机に並べ直さなければなりません。

1-2. メモリ階層 ─ 速度と容量は逆ピラミッドになっている

実は RAM と SSD/HDD のあいだにも、もっと細かい段階があります。CPU の中の超高速な置き場(レジスタ)から、PC の容量の大半を占める SSD/HDD まで、速度と容量はおおむね 逆ピラミッド の関係にあります。

       [速い・小さい]
   ┌───────────────────────┐
   │  CPU レジスタ          │  数 ns、数十バイト程度/コア
   ├───────────────────────┤
   │  L1 キャッシュ         │  約 1 ns、数十 KB/コア
   ├───────────────────────┤
   │  L2 キャッシュ         │  数 ns、数百 KB〜数 MB/コア
   ├───────────────────────┤
   │  L3 キャッシュ         │  約 10 ns、数 MB〜数十 MB/CPU
   ├───────────────────────┤
   │  RAM(メインメモリ)   │  約 100 ns、8〜64 GB
   ├───────────────────────┤
   │  SSD                   │  約 100 µs(=10 万 ns)、500 GB〜数 TB
   ├───────────────────────┤
   │  HDD                   │  約 10 ms(=1000 万 ns)、TB 級
   └───────────────────────┘
       [遅い・大きい]

ポイントは 層を 1 つ降りるたびに体感では 1 桁ずつ遅くなる こと、そして L1 〜 RAM は揮発性、SSD/HDD は不揮発性 という線引きが入っていることです。OS とアプリは、電源が入っているあいだ「速い揮発性の層」にどんどん状態を載せていき、電源が落ちるとその上半分が一気に消える、という前提で動いています。

💡 Tip

「メモリ 16 GB の PC」と言うときの 16 GB はこの図の RAM の段の話で、SSD/HDD の容量とは別物です。スマホの「ストレージ 256 GB/RAM 8 GB」という表記も同じ区別です。

2. プロセスとメモリ ─ “アプリが机を借りる” 仕組み

§1 で「メモリは作業机」というイメージを掴みました。次は アプリがその机をどう使っているか を見ていきましょう。「再起動でリセットされるもの」の中身を想像できるようになるのが目標です。

2-1. プロセスとは ─ 走っているプログラム 1 つひとつ

PC のタスクマネージャを開くと、Chrome、Slack、エクスプローラなどがずらりと並んでいます。あれ 1 行 1 行が プロセス(実行中のプログラム 1 個分) です。アプリを起動すると OS がそのアプリ専用にメモリの一区画を割り当て、プロセスとして登録します。アプリを終了すると、その区画は OS に返却されて他のアプリに使い回されます。

つまり、

  • プログラムは ディスク上のファイル.exe / .app など)
  • プロセスは そのファイルが RAM 上で展開され、いま動いている状態

という関係です。再起動でリセットされるのは、後者(RAM 上に並んでいるプロセス全部)です。

2-2. プロセスのメモリレイアウト ─ 4 つの部屋

1 個のプロセスに割り当てられたメモリ領域は、ざっくり 4 つの部屋に分かれています。

   ┌─────────────────────────┐
   │  テキスト(コード)      │ ← CPU が実行する命令の置き場
   ├─────────────────────────┤
   │  データ/BSS             │ ← グローバル変数や定数の置き場
   ├─────────────────────────┤
   │  ヒープ                  │ ← 動的に確保するメモリ(↓へ伸びる)
   │   ↓                      │
   │                          │
   │   ↑                      │
   │  スタック                │ ← 関数呼び出しの記録(↑へ伸びる)
   └─────────────────────────┘
  • テキスト は実行中のアプリの命令そのもの(§1 の RAM に展開されたコード)
  • データ/BSS は起動時に決まった変数の置き場
  • ヒープアプリが動きながら “もう少しメモリください” と OS にお願いして借りていく領域。長時間使うアプリで膨らみがちなのがここです(§4 のメモリリークの主戦場)
  • スタック は関数を呼ぶたびに使う一時的な作業場で、関数を抜けると自動的に片付きます

ヒープが「動かしているうちに増えていく」場所だ、という点だけ覚えておいてください。これが §4 で効いてきます。

2-3. 仮想メモリ ─ アプリは “自分専用の机がある” と思い込んでいる

ここでもう一段だけ踏み込みます。実は 複数のプロセスが同時に動いていても、各アプリは「自分だけが机を独り占めしている」かのように振る舞っている のです。これを実現しているのが 仮想メモリ(OS がアプリ毎に用意する “専用机のフリ” の仕組み) です。

   各アプリから見えるアドレス(仮想アドレス)
          │
          │   OS のメモリ管理(MMU + ページテーブル)
          ▼
   実際の RAM 上の場所(物理アドレス)

OS は ページテーブル という対応表を持っていて、アプリが「アドレス 0x1000 番地に書いて」と言ったら、それを実物の RAM 上の物理アドレスに翻訳して書き込みます。アプリ A の 0x1000 とアプリ B の 0x1000 は実体としては別の物理アドレスに繋がっている、というわけです。

この仕組みは便利ですが、副作用として 「OS がページテーブルや、それに紐づく内部データを大量に保持している」 という事実があります。これも電源を入れているあいだに RAM 上に積み重なる “状態” の一部で、再起動でまとめてゼロに戻ります。

💡 Tip

RAM が足りなくなると OS は古いデータを SSD に一時退避させます。これを スワップ(机に乗り切らない書類を一時的に本棚へ退避させること) と呼びます。スワップが多発するとアプリが急に遅くなる体感があり、再起動するとスワップ用の領域もリセットされて軽くなる、というメカニズムが裏で動いています。

3. 【中核】 再起動が実際にやっていること

ここまでで「OS とアプリは RAM 上に大量の状態を積み上げる」「電源が切れるとそれが消える」という土台ができました。では、私たちが何気なく押している「再起動」ボタンは、実際に裏で何をしているのでしょうか? それを 8 段階のフェーズに分解してみます。

3-1. 再起動の 8 フェーズ

各フェーズは数百ミリ秒〜数秒〜数十秒で進み、合計が「再起動の待ち時間」になります。

  1. 1アプリへ終了通知OS が動作中の各アプリへ “そろそろ終わって” のシグナルを送る。アプリは保存・キャッシュ書き出しなどの後始末をして終了。
  2. 2サービス/ドライバ停止バックグラウンドの常駐プロセスやデバイスドライバ(OS とハードウェア部品を翻訳する小さなアプリ)が順次停止し、リソースを解放。
  3. 3FS 同期 → 電源 OFFRAM 上に残っていたファイルの書き込みを SSD に確定(同期)し、最後に物理的に電源を切る。ここで RAM が物理的に空になる
  4. 4UEFI/BIOS POST電源再投入直後、ハードウェアの自己診断(POST)が走る。CPU / メモリ / SSD / 周辺機器が順に “ハイ” と返事をする。
  5. 5ブートローダ起動SSD の先頭にある起動プログラム(Windows Boot Manager / GRUB / systemd-boot)が読み込まれ、どの OS を起動するか決める。
  6. 6カーネル初期化OS の中核(カーネル)が RAM に読み込まれ、メモリ管理・プロセス管理・ファイルシステムを順に立ち上げる。
  7. 7サービス起動必要な常駐プロセス(ネットワーク・音声・印刷など)を OS が次々と起動。Win=サービス、Linux=systemd、Mac=launchd が司令塔。
  8. 8ログイン → セッション開始ログイン画面が出てきて、あなたがサインインするとデスクトップやアプリが順に立ち上がる。再起動完了。

覚え方:「通知 → 停止 → 同期 → 自己診断 → 起動選択 → カーネル → サービス → ログイン」。電源ボタンを押してからデスクトップが戻るまで、必ずこの 8 ステップを通ります。

3-2. 「シャットダウン → 起動」と「再起動」は同じ?

ここが §0 の最初の疑問への直接の答えです。Windows 10/11 では、両者は同じではありません

Windows 10 以降には Fast Startup(高速スタートアップ) という機能が標準で有効になっています。これは「シャットダウン」を選んだとき、本当に全部を終わらせるのではなく、

  1. ユーザーのアプリだけ閉じる(ここまでは普通のシャットダウンと同じ)
  2. カーネルとドライバの状態を SSD にファイルとして書き出す(休止に近い動作)
  3. 電源 OFF

という手順を踏みます。次回起動時には、ステップ 4〜6(POST → ブートローダ → カーネル初期化)の 重い部分を SSD から復元してスキップ するため、起動が速くなります。

ところが、ここがクセモノです。この方式だと、カーネル領域に積み上がった “状態” がそのまま次回も復元されてしまう のです。一方「再起動」を選ぶと Fast Startup を 無視して完全な 8 フェーズを通る ため、本当の意味でゼロから組み直せます。

フェーズシャットダウン → 電源ボタン
(既定 = Fast Startup 有効)
再起動
1. アプリへ終了通知
2. サービス/ドライバ停止一部のみ(カーネル休止のため)✓(完全)
3. FS 同期 → 電源 OFF
4. UEFI/BIOS POST
5. ブートローダ起動
6. カーネル初期化✗(休止状態から復元)
7. サービス起動一部のみ(復元で済む分はスキップ)✓(完全)
8. ログイン → セッション開始

つまり、

  • 起動時間を縮めたいだけなら シャットダウン → 電源 ON で OK
  • 「最近どうも調子が悪い」「Windows Update を確実に反映したい」なら 必ず “再起動” を選ぶ

のが正解、という地味に重要な使い分けが存在します。macOS/Linux にはこの差はほぼ無く、シャットダウン → 起動 と 再起動 はほぼ等価に動きます。

⚠️ よくある落とし穴

会社や学校の PC で「シャットダウンして帰っているのに、翌朝なぜか前日の不具合がそのまま残っている」というときは、Fast Startup が原因のことがあります。設定で無効化することもできますが(Windows の電源オプション)、無効化せず 必要なときだけ “再起動” を選ぶ 運用が現実的です。

4. メモリリーク ─ “貸した机が返ってこない” 現象

§2-2 で「ヒープは動かしているうちに増えていく場所」と書きました。本来、アプリは借りた領域を使い終わったら OS に返す約束になっています。ところが現実には 借りっぱなしで返さないアプリ が一定の割合で存在します。これを メモリリーク(借りた机を返し忘れて、徐々に作業スペースが狭くなっていく事故) と呼びます。

4-1. 何が起きているのか

アプリがメモリを借りるときと返すときは、ざっくり次のような流れです。

   [借りるとき]                    [返すとき]
   アプリ → "100 MB ください"      アプリ → "もう要らないので返します"
   OS   → "ここからどうぞ"        OS   → "了解、回収して再利用に回します"

リークが起きるのは、アプリが返すべき場面で返し忘れる ケースです。原因はプログラムのバグ(参照を消し忘れた、終了処理を呼び忘れた)が大半で、数百バイトの小さなリークでも、1 秒間に何回も同じことを繰り返すループ の中で起きると、数時間〜数日で GB 単位に膨らみます。

4-2. 時間とともに RAM が “じわじわ” 食われていく様子

以下は、リークがあるアプリを 24 時間動かし続けたときの、PC 全体の RAM 使用率の擬似的なイメージです。

   RAM 使用率
   100% ┤                                                                ████
        │                                                          ██████████
    80% ┤                                                    ██████████████
        │                                              ██████████████████
    60% ┤                                        ██████████████████████
        │                                  ██████████████████████████
    40% ┤                            ██████████████████████████████
        │                      ██████████████████████████████████
    20% ┤                ██████████████████████████████████████
        │  ██████████████████████████████████████████████████
     0% └─────────────────────────────────────────────────────────────────────→
        0h        4h        8h        12h       16h       20h       24h

最初は普通に動いていたアプリも、何時間か経つと “知らないうちに” RAM を埋め尽くしていきます。RAM が足りなくなると OS は §2-3 で触れた スワップ を発動して SSD と入れ替えますが、スワップの読み書きは RAM の 1000 倍ほど遅いため、PC 全体が体感的に重くなります。

再起動するとなぜ直るのか:再起動でリークしたメモリも含めて RAM がまるごと空に戻り、各アプリがクリーンな状態でスタートし直すため、リーク量が一気にゼロにリセットされるからです。

4-3. スマホでも起きる

スマホは PC と違い「電源を切る」「再起動する」習慣があまりありません。そのまま 数週間〜数ヶ月、スリープ運用だけで使い続ける人 がほとんどです。

ところが、スマホ向けアプリにもリークするものはあり、

  • バックグラウンドの SNS アプリが少しずつメモリを溜め込む
  • ブラウザのタブを開きっぱなしでヒープが膨れる
  • ゲームで一度確保した画像メモリが解放されない

といったことが積み重なります。「最近スマホがもっさりしてきた」「なぜか電池の減りが早い」というときに 電源を切って入れ直す と元気が戻るのは、PC と同じくこのリークがリセットされるからです。スマホは PC より自動メモリ管理が強力ですが、それでもアプリ単体のバグまでは防ぎきれません。

💡 Tip

「メモリを増設すればリークしないのでは?」と思いますが、それは “症状を遅らせる” だけです。リーク量に対して RAM が大きければ気づくまでの時間が長くなるだけで、根本原因はアプリ側のバグなので、結局はいつか再起動が必要になります。

5. リソースハンドル枯渇 ─ メモリ以外にも有限なものがある

「再起動で直る不調」はメモリリークだけが原因ではありません。OS が管理している メモリ以外の有限資源 にも、同じく “貸し出されっぱなし” 問題があります。総称して リソースハンドル(OS が発行する整理券。番号で管理される有限のチケット) と呼びます。

5-1. 代表的なハンドル種別

OS がアプリに発行するハンドルは、ざっと次のような種類があります。どれも 数に上限 があり、上限に達すると新しい操作が一切できなくなります。

種別何のチケット?上限の目安観察コマンド(例)
ファイルディスクリプタ(FD)開いているファイルやパイプ 1 つにつき 1 枚プロセスごとに 1024〜数百万(OS 設定次第)Linux: ls /proc/$PID/fd | wc -l
ソケットTCP/UDP の通信 1 本につき 1 枚システム全体で数万〜数十万Linux: ss -s、Win: netstat -an
ロック(mutex / セマフォ)“今は他の人触らないで” と札をかけるための番号プロセス/システムごとに数千〜数万lsoffuser
GUI ハンドル(Win)ウィンドウ・カーソル・アイコンなど画面要素 1 個プロセスあたり 10,000(既定)Win: Get-Process | Sort-Object Handles -Desc

5-2. 枯渇するとどうなる? ─ “もう開けません” の正体

ハンドルがリークすると、表面的にはこんな症状で出ます。

  • 「ファイルが開けません」「Too many open files」エラー
  • ブラウザのタブが新規作成できない
  • 通信が一切繋がらない(実は背後で全ソケットを使い切っている)
  • Windows の画面に「ウィンドウを開けません」のメッセージが出る

メモリと違って RAM の使用率は普通 なのに不具合が出るので、「メモリは余裕あるのになぜ?」と困惑することが多いタイプです。一見無関係な現象に見えても、根は §4 のメモリリークと同じ “返却忘れ” です。

再起動するとなぜ直るのか:プロセスが終了するときに、OS は そのプロセスが握っていたハンドルを強制的に全部回収 します。再起動では全プロセスが終了するため、ハンドルカウンタがゼロからやり直しになり、OS の有限リソースが完全に空きに戻ります。

💡 Tip

業務サーバーで「数日置きに再起動するとなぜか安定する」というジンクスは、ほとんどがこのハンドル枯渇かメモリリークが原因です。原因のアプリを特定すれば再起動なしで運用できますが、特定が難しいので “定期再起動” でしのいでいる現場も少なくありません(プログラマがそれを誇るかどうかは別問題ですが…)。

6. アップデートと “使用中のファイル” ─ 再起動して反映の正体

「Windows Update をインストールしました。再起動して変更を完了してください」というメッセージを誰もが見たことがあると思います。なぜ更新だけで終われないのか? そこには OS が動かしている “使用中のファイル” という制約が関係しています。

6-1. ファイルロック ─ 動いているものは差し替えられない

OS には ロック(OS が “今このファイルは使用中” と札をかけること) という仕組みがあります。誰かが書き込んでいる最中の書類を、別の人が同時に上書きしてしまったら整合性が崩れるからです。

問題は、OS 自身(カーネル本体)や、常駐サービスの実行ファイル も、起動中はずっと “使用中” としてロックされているという点です。

   [起動中]
   SSD 上のカーネルファイル ─── ロック中(書き換え禁止)
            │
            ▼
   メモリにロード済み ───── CPU が今この命令で動いている

   ↓ アップデートで新しいカーネルファイルが届いても…

   SSD 上のカーネルファイル ─── まだロック中
   新しいカーネルファイル   ─── 横に置かれて待機

つまり、新しいバージョンを 置く ことはできても、走っている実物を 差し替える ことはできません。「再起動して変更を完了する」とは、

  1. いったん古いカーネルを止める(電源 OFF)
  2. 起動時、ブートローダが新しい方を読み込む

という、Windows 流に言えば “入れ替え可能な瞬間 を再起動で作り出している” 行為なのです。

6-2. Windows / macOS / Linux の挙動の違い

OS再起動が要求される代表ケースコメント
Windows 10/11月例 Windows Update、ドライバ更新、.NET ランタイム更新“Pending Reboot”(再起動保留)の状態が見えやすい
macOS“macOSアップデート”(メジャー/マイナー)、セキュリティアップデートアップデート画面で再起動が前提
Linuxカーネル更新、glibcsystemd などコア部品の更新needs-restarting(RHEL 系)//var/run/reboot-required(Debian 系)で確認可能

どの OS でも理由は同じで、実行中のプログラム自身が、自分のファイルを書き換えることはできない という根本制約に行き当たります。

6-3. 例外 ─ ライブパッチ(再起動しないアップデート)

近年は、ライブパッチ(実行中のカーネルをそっと書き換える限定的な仕組み) という技術もあります。代表例は次のとおりです。

  • Linux カーネル: kpatch(Red Hat)/livepatch(Canonical)/Ksplice(Oracle)
  • Windows Server: 一部のセキュリティ修正をホットパッチとして適用

ただし、これらは 任意のアップデートに使えるわけではなく、リスクの高い変更(カーネルの大規模改変、データ構造の変更など)には依然として再起動が必要です。”全アップデートを再起動なしでこなせる魔法” はまだ存在しません。

💡 Tip

「インストールがなぜ必要か?」という別記事で ソフトウェアが OS に組み込まれる仕組み を解説しています。インストール時に置かれる実行ファイルが、まさにここで言う “ロックされる対象” になります。合わせて読むと、OS 内部のファイル管理が立体的に見えてきます。

7. 「再起動なし」が成立する世界

これまで「再起動が必要な理由」を見てきました。一方、現代のクラウドや開発の世界では、ユーザーから見えないところで再起動を巧妙に隠している ケースも増えています。「Web サービスは年中無休で動いているのに、いつ再起動しているの?」という疑問への答えがここです。

7-1. 再起動を回避する/隠す 5 つのアプローチ比較

方式ダウンタイム適用範囲主な使い所代表例
フル再起動あり(数十秒〜数分)OS まるごと個人の PC/緊急時のサーバーWindows / macOS / Linux 通常運用
ローリング再起動無し(外から見れば)サーバー群を 1 台ずつ24/365 運用の Web サービスKubernetes、AWS Auto Scaling
コンテナ再生成数秒アプリ単位クラウドのアプリ更新Docker、Kubernetes Pod 再作成
ホットリロード無しアプリのコードのみ開発時/一部の運用Webpack HMR、nodemon、Rails の dev mode
ライブパッチ無しカーネルの一部重要サーバーのセキュリティ修正kpatchKsplicelivepatch

7-2. それぞれの仕組み(初学者向け言い換え付き)

  • ローリング再起動 ─ 同じサービスを 複数台のサーバー で動かしておき、1 台ずつ順番に再起動する方式。利用者からのアクセスは “再起動していない方の台” に流すことで、サービス全体としては止めずに更新できる。クラウドの「年中無休」はほぼこれで実現されています。
  • コンテナ再生成コンテナ(アプリと必要な部品をまとめて密閉した “持ち運べる小部屋” のようなもの) を丸ごと作り直すことでアプリを更新する方式。OS 全体の再起動より圧倒的に速く(数秒)、ローリング再起動と組み合わせるのが定番です。
  • ホットリロード ─ プロセスを止めずに コードや設定だけを差し替える 仕組み。開発中のアプリで「ファイルを保存したら自動で画面が更新される」体験はこれです。本番運用ではプログラム言語や仕組みによって対応状況がまちまちです。
  • ライブパッチ ─ §6-3 で触れた、実行中のカーネルを止めずに書き換える 仕組み。どんなアップデートにも使えるわけではなく、限定的な修正に向くものとして使われています。

7-3. 結論 ─ 「再起動なし」も、誰かが裏で再起動している

ここまで来ると気づくはずです。ユーザーが再起動を意識しない世界も、実は “誰かが・どこかで・いつか” 再起動している ことで成り立っています。クラウドサービスはローリング再起動で台を順番に更新していますし、コンテナは個別に再生成され続けています。

逆に言えば、個人の PC のように「単一の OS をずっと使い続ける」運用では、定期的な再起動は避けられない のが現代でも変わらない事実です。再起動を悪者扱いせず、「OS の状態を綺麗に組み直す機会」と捉えるのが健全な付き合い方です。

💡 Tip

クラウドやサーバー側の話に興味があれば、IPアドレスとは? も合わせて読むと、ローリング再起動で「複数台のうちの 1 台」にアクセスを振り分ける際の前提(ロードバランサと IP アドレス)が見えてきます。

8. 実際に観察する ─ 自分の PC でメモリと再起動を覗く

理屈が掴めたら、自分の PC でも状況を確認してみましょう。OS ごとに 1〜2 行のコマンドで、いま RAM がどれくらい使われているか/いつ最後に再起動したかが分かります。

8-1. メモリ使用量を見る

check-memory
# Windows (PowerShell) ─ メモリを多く使っているプロセス TOP 5
Get-Process | Sort-Object WS -Descending | Select-Object -First 5 Name, @{n=\u0022RSS_MB\u0022;e={[math]::Round($_.WS/1MB,1)}}

# macOS ─ システム全体のメモリ統計
vm_stat

# Linux ─ メモリ使用量を人間に読める形で
free -h

8-2. 起動時刻を確認する(最後に再起動した時刻)

「自分は最後にいつ再起動したっけ?」を覗くコマンドです。

check-uptime
# Windows (PowerShell) ─ 起動時刻
(Get-CimInstance -ClassName Win32_OperatingSystem).LastBootUpTime

# macOS / Linux ─ いつから動き続けているか
uptime

uptime は「現在時刻、起動からの経過時間、ログインユーザー数、ロードアベレージ」を 1 行で出します。Linux サーバーで uptime の数字が数百日になっていると、それはそれで「セキュリティ更新を当ててないのでは?」という指摘材料になることもあります(健全な運用では定期再起動が望ましいケースが多い)。

8-3. ハンドル数を見る(応用)

§5 で触れたハンドルが今どれくらい使われているかは、こんな具合に確認できます。

# Linux ─ システム全体で使用中のファイルディスクリプタ数
cat /proc/sys/fs/file-nr

# Windows (PowerShell) ─ ハンドル数 TOP 5 のプロセス
Get-Process | Sort-Object Handles -Descending | Select-Object -First 5 Name, Handles

出力されたハンドル数が じわじわ増え続けるのに減らない ようなら、リーク疑惑あり、というサインになります。

まとめ ─ 4 行エッセンス

長い記事でしたが、エッセンスは 4 行に圧縮できます。

  • 再起動 = 揮発性のメモリと OS 状態をゼロから組み直すこと ─ RAM が物理的に空になることで全状態が消える
  • 再起動が必要になるのは “リーク/ハンドル枯渇/使用中ファイル” の 3 点 ─ いずれもプロセスが終わらなければ片付かない
  • Windows 10/11 では “シャットダウン → 起動” と “再起動” は同じではない ─ 不調時は必ず “再起動” を選ぶ
  • クラウドはローリング再起動とコンテナで再起動を巧妙に隠している ─ 個人 PC では定期的な再起動が現代でも有効

一度この枠組みを持っておけば、PC でもスマホでもサーバーでも「なぜ調子が悪いのか/再起動で治る理屈」が同じレンズで見渡せるようになります。

ネットワーク側の土台は IPアドレスとは?、ソフトウェア側の “OS との握手” は なぜソフトウェアはインストールしないと動かないのか? で解説しました。本記事の “OS が抱え込む状態” と合わせて、PC の中で起きていることをほぼ俯瞰できるようになります。

FAQ

Q1. スリープ・休止と再起動はどう違いますか?

A. 状態の保存先と “再起動効果” の有無 が違います。スリープ は RAM に通電したまま CPU や画面だけ止め、RAM の中身はそのまま残るため、復帰は数秒で速いが OS の状態は何もリセットされない(不調はそのまま残る)。休止(ハイバネート) は RAM の中身を SSD にファイルとして書き出してから電源 OFF。次回はそのファイルを RAM に戻すので 状態はそのまま 復元される(こちらも不調は残る)。シャットダウン → 起動 は Windows 10/11 では Fast Startup によりカーネル休止状態を保存・復元するため、純粋な「ゼロからの起動」にはならないことがある(§3-2 参照)。再起動 だけが Fast Startup を無視して全フェーズを通り、RAM が物理的に空になり、すべての状態がリセットされる。「不調を直したい」目的では迷わず “再起動” 一択です。

Q2. メモリを増やせば再起動はいらなくなりますか?

A. いいえ、根本解決にはなりません。RAM 容量を増やすと、メモリリークが起きていても「気づくまでの時間」が長くなるだけで、リーク自体は止まりません。むしろ気づかないうちにスワップの読み書きが増えて、ある日突然 PC が動かなくなる、という形で表面化することもあります。RAM の余裕は “保険” であって “対策” ではない と覚えてください。

Q3. サーバーは本当に何百日も再起動しないのですか?

A. 半分本当、半分ちょっと違います。単一サーバーが文字通り 1000 日以上 uptime を伸ばしている例は確かに存在します。ただし、現代のクラウド運用では 意図的に定期再起動するのが推奨 です(セキュリティ更新の確実な反映、潜在的なリーク・ハンドル枯渇のリセット、構成のドリフト検出など)。「サービスとして年中無休」は §7-1 の ローリング再起動 によって、個々のサーバーは適度に再起動しながら全体が稼働を続ける形で実現されています。つまり、“アプリケーションとしての無停止” と “OS インスタンスの無停止” は別物 です。

Q4. 再起動を頻繁にすると壊れますか?

A. 通常の使い方の範囲ではほぼ問題ありません。HDD の時代は機械的な摩耗の懸念が多少ありましたが、現代の SSD はそうした心配は事実上なくなっています。むしろ 電源ボタンを長押しして強制的に切る ような操作は、ファイルシステム同期(§3-1 のフェーズ 3)が走らないため、ファイル破損のリスクがあるので避けましょう。普通に「再起動」を選んで実行する分には、毎日でも安全です。

Q5. Mac はあまり再起動しなくていい、と聞きましたが本当ですか?

A. 半分正しいです。macOS は ファイルロックがやや緩く アプリ更新で再起動が要らないことが多い、カーネルアップデート時には素直に再起動を要求するメモリ管理(圧縮メモリなど)が積極的 で RAM 不足の体感が出にくい、といった理由で Windows よりは “再起動を意識する場面が少ない” のは事実です。ただし、メモリリークやハンドル枯渇は OS を問わず起きる ので、「Mac だから一切再起動不要」というのは過信です。動作が怪しくなったら遠慮なく再起動しましょう。

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です