天天看點

VIRT,RES,SHR,虛拟記憶體和實體記憶體

VIRT:

1、程序“需要的”虛拟記憶體大小,包括程序使用的庫、代碼、資料,以及malloc、new配置設定的堆空間和配置設定的棧空間等;

2、假如程序新申請10MB的記憶體,但實際隻使用了1MB,那麼它會增長10MB,而不是實際的1MB使用量。

3、VIRT = SWAP + RES

RES:

1、程序目前使用的記憶體大小,包括使用中的malloc、new配置設定的堆空間和配置設定的棧空間,但不包括swap out量;

2、包含其他程序的共享;

3、如果申請10MB的記憶體,實際使用1MB,它隻增長1MB,與VIRT相反;

4、關于庫占用記憶體的情況,它隻統計加載的庫檔案所占記憶體大小。

5、RES = CODE + DATA

SHR:

1、除了自身程序的共享記憶體,也包括其他程序的共享記憶體;

2、雖然程序隻使用了幾個共享庫的函數,但它包含了整個共享庫的大小;

3、計算某個程序所占的實體記憶體大小公式:RES – SHR;

4、swap out後,它将會降下來。

示例

#include <iostream>

int main()

{

    char * p = new char [1024*1024*512];

    getchar();

    return 0;

}

top:

PID USER PR  NI  VIRT RES SHR S %CPU %MEM TIME+ COMMAND

401 hhhhh 17   0   523m 916 792  S  0.0  0.0   0:00.00 ./main

原文:

http://blog.csdn.net/huyiyang2010/article/details/7815491