12

コンピュータ サイズの観点から見た仮想メモリは、

[プログラムを作成する方法] 連続したアドレスの範囲が広いと考えます。しかし実際には、現在使用している部分は RAM の周りに散らばっており、非アクティブな部分はディスク ファイルに保存されています。(ウィキペディア)

Windows タスク マネージャーの VM サイズは、アドレス指定可能な仮想メモリ領域の合計、またはプロセスが現在仮想メモリ領域で使用しているメモリの量のいずれかとして解釈します。

しかし、タスク マネージャーでは、WM サイズは多くの場合、プロセスが使用している RAM の量であるメモリ使用量よりも小さくなっています。したがって、WM サイズには別の意味があるのでしょうか。

4

5 に答える 5

8

これは、現在物理メモリにあるかどうかに関係なく、このプロセスによって割り当てられたすべてのプライベート (共有されていない) バイトの合計です。

Windows メモリ管理またはコミット チャージの入門ガイドに関するウィキペディアの記事も参照してください。

このようなプロセスの状態を監視する開発者には、SysInternals Process Explorerをインストールして、既定のタスク マネージャーの代わりに使用することをお勧めします。この値は、その中で「プライベート バイト」と呼ばれます。

于 2008-09-22T12:50:22.667 に答える
1

VM サイズに関する正しい答えはどれですか?

  • コーディングホラーで

    プロセスの使用頻度の低いメモリのうち、ディスクにページングされた量。

  • コーディングホラーのコメント

    VM サイズが間違っています。これは、現在物理メモリにあるかどうかに関係なく、このプロセスによって割り当てられたすべてのプライベート (共有されていない) バイトの合計です。「Mem Usage」よりもメモリ リークがあるかどうかを追跡するのに適した値です。パフォーマンス モニターでは、「プロセス: プライベート バイト」と同じ値を使用できます。

  • MSDN で

    仮想メモリ サイズ : プロセスにコミットされた仮想メモリまたはアドレス空間の量。

何が正しいのか混乱しています。

于 2008-08-26T08:07:00.370 に答える
0

そのプロセスのアドレス空間にマップされたメモリの量。これには、共有メモリ マッピングを含めることができます。

プロセスには、その一部である共有オブジェクト (DLL) ごとのメモリ空間のセクション、スタック用の一部のメモリ、およびプロセス自体によって割り当てられた領域があります。

たとえばcat、システム上のコマンドのメモリ マップを見ると、そのメモリ マッピングを確認できます。この場合cat /proc/self/maps、cat プロセス自体を調査するために使用します。その仮想メモリにマップされるのは、バイナリ自体、いくつかのヒープ、ロケール情報、libc (さまざまな許可フラグを含む)、ld.so (動的リンカー)、スタック、vdso および vsyscall セクション、およびいくつかの匿名マッピング (バッキング ファイルのないマップされたページ) です。 )。

00400000-00408000         r-xp      /bin/cat
00607000-00608000         rw-p      /bin/cat
008ac000-008cd000         rw-p      [heap]
7fbd54175000-7fbd543cf000 r--p      /usr/lib/locale/locale-archive
7fbd543cf000-7fbd54519000 r-xp      /lib/libc-2.7.so
7fbd54519000-7fbd54718000 ---p      /lib/libc-2.7.so
7fbd54718000-7fbd5471b000 r--p      /lib/libc-2.7.so
7fbd5471b000-7fbd5471d000 rw-p      /lib/libc-2.7.so
7fbd5471d000-7fbd54722000 rw-p
7fbd54722000-7fbd5473e000 r-xp      /lib/ld-2.7.so
7fbd5491d000-7fbd5491f000 rw-p 
7fbd5493a000-7fbd5493d000 rw-p
7fbd5493d000-7fbd5493f000 rw-p      /lib/ld-2.7.so
7fff5c929000-7fff5c93e000 rw-p      [stack]
7fff5c9fe000-7fff5c9ff000 r-xp      [vdso]
ffffffffff600000-ffffffffff601000 r-xp    [vsyscall]

マッピングごとに、終了アドレスから開始アドレスを差し引いてサイズを決定し[stack]ます0x7fff5c9ff000 - 0x7fff5c9fe000 = 0x1000。10 進数で 4096 バイト - 4 kiB スタック。

これらの数値をすべて合計すると、プロセスの仮想メモリ (VM) サイズが得られます。

VM のサイズは、プロセスが使用しているメモリの量を判断するための信頼できる方法ではありません。たとえば、/lib/libc-2.7.soそれを使用するプロセスの数に関係なく、物理メモリには各読み取り専用マップのコピーが 1 つだけ存在します。

于 2008-08-26T04:54:17.133 に答える
-2

これに答えるためにコーディングホラーの投稿はどうですか: http://www.codinghorror.com/blog/archives/000393.html

「VM サイズ: プロセスの使用頻度の低いメモリのうち、ディスクにページングされた量。」

于 2008-08-26T04:24:46.800 に答える
-3

WindowsタスクマネージャーにVMサイズが表示されません。WhatupGoldのタスクマネージャーにVMサイズがあります。つまり、この場合、VMで利用可能な合計金額に関連していると思います

于 2010-09-21T23:20:05.640 に答える