1

根据我的理解,该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 的可写私有内存视为应用程序实际分配的内存吗?

4

0 回答 0