そのプロセスのアドレス空間にマップされたメモリの量。これには、共有メモリ マッピングを含めることができます。
プロセスには、その一部である共有オブジェクト (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 つだけ存在します。