システム モニターと実行中に異なる数値が表示されるのはなぜですかfree -m
? 数日間、Flash 付きの Firefox を実行していましたが、マシンが遅くなりました。メモリの 1 GB すべてが消費されたため、Firefox と npviewer.bin をシャットダウンしました。システム メモリには、free -m
647 MB と表示されていた RAM が 192 MB と表示されました。
何かご意見があれば、システム モニターが正しいと思います。
答え1
どれほど高度なオペレーティング システムでも、特定のアプリケーションがどれだけのメモリを使用しているか、またはどれだけのメモリが空いているかが明確にはわかりません。問題が複雑になる主な原因は次のとおりです。
- スワップがある場合、空きメモリに空きスワップ領域を含めますか? 含めない場合、スワップを設ける意味は何でしょうか? ただし、スワップがある場合、RAM 不足のためにシステムがスラッシング (つまり、スワップが頻繁に発生) している場合でも、常に空きメモリが十分にある可能性が高くなります。
- メモリにはさまざまな用途があります。主な用途は、アプリケーションによって割り当てられたメモリと、ディスク キャッシュ専用のメモリの 2 つです。リソース不足のないシステムでは、通常、これら 2 つのメモリは同程度の大きさです。何の目的にも使用されていないメモリだけを数えると、メモリが非常に少なくなるのが普通です。ディスク キャッシュは、メモリが必要になるまでなくなることはありません。ただし、空きメモリにディスク キャッシュを含めると、アプリケーション メモリですべてを埋めることができると思われるかもしれませんが、そうするとディスク キャッシュが不足してスラッシングが発生します。
- 共有メモリを使用すると、特定のアプリケーションに割り当てられたメモリの部分をカウントすることが難しくなります。共有メモリには、複数のアプリケーションが開いているファイルの共有ライブラリやディスク キャッシュなどが含まれます。
したがって、報告された両方の数値はおそらく正しく、「空きメモリ」の概念が異なるだけでカウントされています。(またfree
、複数の数値が報告されていますが、647MB がどれであるかは述べていません。行では-/+ buffers/cache
ディスク キャッシュが空きメモリとしてカウントされますが、行ではMem
カウントされません。)