実メモリ、仮想メモリ、共有メモリ、プライベートメモリの違いは何ですか?


63

アクティビティモニターのさまざまな列は少しわかりにくい


アクティビティモニターの列と比較してプロセスで[検査]をクリックすると、5番目のタイプのメモリがあることに注意する価値があります。具体的には、「仮想」メモリには「仮想メモリサイズ」と「仮想プライベートメモリ」の2種類があります。後者は、アクティビティモニターの[仮想メモリ]列に表示されるものです。
drfrogsplat

回答:


46

サーバー障害での私の答えから取られた:

Mac OS Xメモリ用語:

Wired:これはカーネルコードなどを指します。RAMから移動してはならないメモリ。常駐メモリとも呼ばれます。

共有:2つ以上のプロセス間で共有されるメモリ。両方のプロセスでこのメモリ量が表示されるため、実際に使用されているメモリ量について少し誤解を招く可能性があります。

Real:これは、task_info()によって報告されるアプリケーションの「実際の」メモリ使用量です。現在のプロセスが持っている物理ページの数の大まかなカウントです。(RSIZE)

プライベート:これは、プロセスが単独で使用しているメモリであり、常駐メモリで使用されます。(RPRVT)

Virtual:何かにマップされるプロセス内のアドレス空間の総量-それが変数のためのarbitrarily意的に大きい空間であろうとなにか-それは実際のVMの使用と同等ではありません。(VSIZE)

アクティブ:現在アクティブとしてラベル付けされ、RAMが使用されているメモリ。

非アクティブ:「非アクティブなメモリは使用されておらず、ディスクにキャッシュされています。別のアプリケーションがスペースを必要とするまでRAMに残ります。この情報をRAMに残しておくことはそれに後で」-Mac OS Xヘルプ

Free:データなしで実際に使用可能なRAMの量。


私が知っている(そしてフォローアップ調査で見つけることができた)最高のドキュメントは、開発者のWebサイトにあるApple独自のメモリ管理の記事です。

その他の価値のある情報源:Darwin-devメーリングリスト:[ 1 ]、[ 2 ]、およびMacOSXHintsに関する古い記事。さらに、Mike Ashは彼のブログに素人の紹介を掲載しています。


5
Appleの管理メモリのドキュメントを読んで、Inactiveは必ずしもディスクにキャッシュされていません。非アクティブなメモリ使用量(現在は747.5 MB)と「使用済みスワップ」(現在は0バイト)を確認すると、これを実証できます。非アクティブとは、プロセスによって最近読み書きされていないメモリページを指します。
drfrogsplat

1
Activity Monitorには「仮想」メモリへの2つの参照があるため、「仮想」を明確にする価値があるかもしれません。[仮想メモリ ]列は、[プロセスの検査]ウィンドウの[ 仮想プライベートメモリ ]を参照します。そのウィンドウには、[ 仮想メモリサイズ]というタイトルの別のエントリがあります(仮想メモリの共有コンポーネントだと思います)。これは10.6.4にあります(アクティビティモニターの用語が変更された場合)
-drfrogsplat

「プライベートメモリ」は「リアルメモリ」の一部ですか?
フランクリンゆう

6

実メモリは、物理メモリ(コンピュータの実際のRAMモジュール)に関連しています。仮想メモリとは、プロセスに割り当てられる「偽の」メモリの量のことです。つまり、そのプロセスの永続的な記憶媒体(ハードドライブ、ソリッドステートドライブなど)に割り当てられるメモリです。共有メモリは、他のプロセスと共有できる物理(実)メモリです。プライベートメモリは、割り当てられたプロセスでのみ使用できる「実際の」メモリです。

これらの説明も同様に役立つ可能性があります...アクティビティモニターから直接->ヘルプ->システムメモリ使用量を表示:

メモリペインの下部に表示される情報の一部の説明を次に示します。

  • 有線:有線メモリには、常にRAMに保持する必要がある情報が含まれています
  • アクティブ:アクティブに使用されている情報を含むアクティブなメモリ。
  • 非アクティブ:非アクティブなメモリには、アクティブに使用されていない情報が含まれています。この情報をRAMに残しておくと、後で(またはコンピューターのクライアント)に戻ってきた場合に便利です。
  • 使用済み:使用済みメモリがプロセスまたはシステムによって使用されています。使用済みメモリは、有線、アクティブ、および非アクティブのメモリの合計です。システムがメモリを必要とする場合、メモリを使用する前に空きメモリが必要です。
  • 空き:空きメモリは使用されておらず、すぐに使用可能です。
  • VMサイズ:仮想メモリ(VM)は、メモリとして使用できるハードディスク領域です。VMサイズは、メモリとして使用されているディスク容量です。Mac OS Xは、使用している物理RAMの量よりも多くのメモリを使用できます。ハードディスクはRAMよりもはるかに遅いため、仮想メモリシステムは効率的なパフォーマンスのためにディスク領域とRAMの間で情報を自動的に分散します。ページイン/アウト:Mac OS XがRAMとディスクスペース間で移動したギガバイトの情報数

6
これは正しくありません。仮想メモリは、ディスクに割り当てられるメモリではありません(スワップと呼ばれます)。仮想メモリは、アドレス空間が割り当てられていますが、物理メモリにはありません。それは同じように見えるかもしれませんが、微妙に異なります。多くの場合、プログラムはメモリに触れることなくメモリを割り当てます。これらの場合、プログラムは多くの仮想メモリを使用しています。具体的な例を挙げると、私のシステムは現在512MBのスワップを使用していますが、196GBの仮想メモリが割り当てられています(K64でSnow Leopardを実行している人にとってはかなり典型的な量です)。
ルイガーバーグ

2
@Louis、仮想メモリが割り当てられているが、RAMまたはハードディスクを使用していない場合、どこにありますか?
マイケルアンダーウッド

4
@マイケル:どこにもありません。理論的です。アドレスが割り当てられて割り当てられたからといって、必ずしも実際に使用されているとは限りません。OSの低レベルのビットは、それらのアドレスをRAMの物理的な場所にマッピングするか、ストレージをスワップするタイミングを知っていますが、アプリケーションが実際にそれらのアドレスに情報を保存していない場合、そのスペースを占有する必要はありません。それだけでなく、各プロセスの列Virtual MemがVMサイズの合計に近いところにないことに気付くでしょう。プロセスは実際にはすべてのメモリを使用しているわけではありません。
ロバートSチャシオ

2
実際には交換できないVMがたくさんあります。たとえば、4GBのファイルをmmapすると、4GBのVMが必要になり、読み取り時にファイルから直接ページインされます。元のファイルは単純に再読み取りできるため、プレッシャーがかかって破棄されます(スワップされません)。VMとスワッピングはVMは、単にスワップするかを把握するために使用されて、本当に全く異なるものです。
ルイGerbarg

3
VSIZEでは、アクティビティモニターにリストされていないものを参照していますが、必要に応じてトップに表示されます。仮想メモリの列に表示されるアクティビティモニターは、一般にVPRVTと呼ばれるものです。これは、他のアプリと共有されていないアプリで使用される仮想アドレスの量です。
ルイガーバーグ

4

AppleはOSX 10.9(Mavericks)のアクティビティモニターを更新しました。http://support.apple.com/kb/HT5890には、すべての意味についての良い記事があります。要約すれば...

ここに画像の説明を入力してください

  • 物理メモリ:インストールされているRAMの量。
  • 使用済みメモリ:使用されているRAMの量で、他のアプリですぐには使用できません。
  • 仮想メモリ:アプリが要求したメモリマッピングの量。これは実際のRAMリソースの消費ではなく、サイズはアプリの作成者によって決定されます。
  • 使用済みスワップ:未使用ファイルとRAMのスワップに使用されているドライブ上のスペース。一部のアクティビティが表示されるのは正常であり、RAMリソースが枯渇したことを示すものではありません。赤の状態でメモリ負荷が発生している場合は、RAMリソースが枯渇していることを示しています。
  • アプリのメモリ:アプリが使用している容量。
  • 有線メモリ:ディスクにキャッシュできないメモリなので、RAMに保持する必要があります。このメモリは他のアプリから借用することはできません。
  • 圧縮済み: RAM内の圧縮されたメモリの量。他のアプリが使用できるRAMリソースが増えます。
  • ファイルキャッシュ:最近使用したファイルを含む、使用可能なアプリとしてマークされたRAM内のスペース。

メモリ圧力グラフ

以前のバージョンのアクティビティモニターの空き、有線、アクティブ、非アクティブ、使用済みのメモリ統計情報の組み合わせは、Mavericksで読みやすい「メモリ負荷」グラフに置き換えられました。

メモリの負荷は色で示されます:

  • 緑色 – RAMメモリリソースが使用可能です。
  • オレンジ – RAMメモリリソースが割り当てられています。
  • – RAMメモリリソースが使い果たされており、OS Xはメモリにドライブを使用しています。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.