Out of Memory(OOM)とは、コンピューターが処理に必要なメモリを確保できなくなり、動作が不安定になったり、プログラムが強制的に終了させられたりする状態のことです。「メモリ不足」と訳され、多くのアプリケーションを同時に開きすぎた際などに発生します。
現実世界に例えると、OOMは荷物でいっぱいになった作業机のようなものです。置き場所がなくなると新しい荷物を置けなくなり、作業そのものが立ち行かなくなってしまう状況によく似ています。
OOMが発生する主な原因
| 原因 | 内容 |
|---|---|
| 同時起動のしすぎ | 多数のアプリを同時に立ち上げている |
| メモリリーク | 不要になったメモリが解放されず残り続ける |
OOM発生時に起きること
メモリが足りなくなると、パソコンの動作が急激に重くなったり、実行中のアプリが強制終了したりすることがあります。サーバーで発生した場合には、稼働していたサービス自体が停止してしまい、大きな影響が出ることもあります。復旧までの間、利用者はサービスを使えなくなってしまいます。
OOM Killerという仕組み
Linuxなどの一部のシステムには、メモリが枯渇しそうになった際に、優先度の低いプロセスを自動的に強制終了させて全体の停止を防ぐ「OOM Killer」という仕組みが備わっています。システム全体を守るための、いわば緊急措置です。どのプロセスを終了させるかは、あらかじめ決められた基準に沿って判断されます。
メモリリークとの関係
OOMの原因としてよく挙げられるのが、プログラムが使い終わったメモリを正しく解放しないまま処理を続けてしまう「メモリリーク」という不具合です。少しずつメモリの使用量が増え続け、最終的にOOMを引き起こしてしまいます。
OOMを防ぐための対策
開発の現場では、不要になったデータを適切に解放するようプログラムを見直したり、メモリの使用量を監視する仕組みを導入したりすることで対策を行います。利用者側でも、使わないアプリを閉じることが基本的な予防策になります。
サーバー運用における影響
Webサービスを支えるサーバーでOOMが発生すると、提供しているサービス全体が停止し、多くの利用者に影響が及ぶおそれがあります。アクセスの急増が見込まれる場面では、あらかじめメモリの余裕を持たせた構成にしておくことが大切です。
エラーメッセージとしての表示
プログラムの実行中にメモリが不足すると、「Out of Memory」や「メモリ不足」といったエラーメッセージが表示されることがあります。原因を調査する際の重要な手がかりとなるため、エラー内容を正確に記録しておくことが役立ちます。
あわせて知っておきたい用語
- メモリ:
処理中のデータを一時的に保存しておく部品です。 - ガベージコレクション:
不要になったメモリを自動的に解放する仕組みです。 - スワップ:
メモリ不足を補うため、ストレージの一部を代用する仕組みです。 - プロセス:
実行中のプログラムの単位のことです。

コメント