根据我的理解,该pmap
命令是获取 Linux 中进程实际内存使用情况的最佳方法。
该pmap -d <pid>
命令的输出给出如下输出。
sujith@linux-1xs7:~> pmap -d 7752
7752: a.out
START SIZE RSS PSS DIRTY SWAP PERM OFFSET DEVICE MAPPING
0000000000400000 4K 4K 4K 0K 0K r-xp 0000000000000000 08:03 /home/sujith/a.out
0000000000600000 4K 4K 4K 4K 0K r--p 0000000000000000 08:03 /home/sujith/a.out
0000000000601000 4K 4K 4K 4K 0K rw-p 0000000000001000 08:03 /home/sujith/a.out
0000000000fa5000 31284K 31252K 31252K 31252K 0K rw-p 0000000000000000 00:00 [heap]
00007fe8ed7f1000 1644K 312K 13K 0K 0K r-xp 0000000000000000 08:02 /lib64/libc-2.15.so
00007fe8ed98c000 2048K 0K 0K 0K 0K ---p 000000000019b000 08:02 /lib64/libc-2.15.so
00007fe8edb8c000 16K 16K 16K 16K 0K r--p 000000000019b000 08:02 /lib64/libc-2.15.so
00007fe8edb90000 8K 8K 8K 8K 0K rw-p 000000000019f000 08:02 /lib64/libc-2.15.so
00007fe8edb92000 16K 12K 12K 12K 0K rw-p 0000000000000000 00:00 [anon]
00007fe8edb96000 84K 16K 8K 0K 0K r-xp 0000000000000000 08:02 /lib64/libgcc_s.so.1
00007fe8edbab000 2044K 0K 0K 0K 0K ---p 0000000000015000 08:02 /lib64/libgcc_s.so.1
00007fe8eddaa000 4K 4K 4K 4K 0K r--p 0000000000014000 08:02 /lib64/libgcc_s.so.1
00007fe8eddab000 4K 4K 4K 4K 0K rw-p 0000000000015000 08:02 /lib64/libgcc_s.so.1
00007fe8eddac000 980K 56K 16K 0K 0K r-xp 0000000000000000 08:02 /lib64/libm-2.15.so
00007fe8edea1000 2048K 0K 0K 0K 0K ---p 00000000000f5000 08:02 /lib64/libm-2.15.so
00007fe8ee0a1000 4K 4K 4K 4K 0K r--p 00000000000f5000 08:02 /lib64/libm-2.15.so
00007fe8ee0a2000 4K 4K 4K 4K 0K rw-p 00000000000f6000 08:02 /lib64/libm-2.15.so
00007fe8ee0a3000 928K 476K 246K 0K 0K r-xp 0000000000000000 08:02 /usr/lib64/libstdc++.so.6.0.17
00007fe8ee18b000 2048K 0K 0K 0K 0K ---p 00000000000e8000 08:02 /usr/lib64/libstdc++.so.6.0.17
00007fe8ee38b000 32K 32K 32K 32K 0K r--p 00000000000e8000 08:02 /usr/lib64/libstdc++.so.6.0.17
00007fe8ee393000 8K 8K 8K 8K 0K rw-p 00000000000f0000 08:02 /usr/lib64/libstdc++.so.6.0.17
00007fe8ee395000 84K 16K 16K 16K 0K rw-p 0000000000000000 00:00 [anon]
00007fe8ee3aa000 132K 104K 3K 0K 0K r-xp 0000000000000000 08:02 /lib64/ld-2.15.so
00007fe8ee583000 20K 20K 20K 20K 0K rw-p 0000000000000000 00:00 [anon]
00007fe8ee5c8000 12K 8K 8K 8K 0K rw-p 0000000000000000 00:00 [anon]
00007fe8ee5cb000 4K 4K 4K 4K 0K r--p 0000000000021000 08:02 /lib64/ld-2.15.so
00007fe8ee5cc000 4K 4K 4K 4K 0K rw-p 0000000000022000 08:02 /lib64/ld-2.15.so
00007fe8ee5cd000 4K 4K 4K 4K 0K rw-p 0000000000000000 00:00 [anon]
00007fff7283f000 132K 12K 12K 12K 0K rw-p 0000000000000000 00:00 [stack]
00007fff729c2000 4K 4K 0K 0K 0K r-xp 0000000000000000 00:00 [vdso]
ffffffffff600000 4K 0K 0K 0K 0K r-xp 0000000000000000 00:00 [vsyscall]
Total: 43616K 32392K 31710K 31420K 0K
31584K writable-private, 12032K readonly-private, 0K shared, and 32392K referenced
sujith@linux-1xs7:~>
这是我的 C++ 程序。
#include <iostream>
using namespace std;
int main()
{
for (int i = 0 ; i < 1000000 ; i++)
new char[8];
int iValue;
cout << "Enter:";
cin >> iValue;
return 0;
};
我们可以将 31584K 的可写私有内存视为应用程序实际分配的内存吗?