VIRT,RES,SHR,虛擬內存和物理內存(轉)


VIRT

1、進程需要的虛擬內存大小,包括進程使用的庫、代碼、數據,以及mallocnew分配的堆空間和分配的棧空間等;

2、假如進程新申請10MB的內存,但實際只使用了1MB,那么它會增長10MB,而不是實際的1MB使用量。

3VIRT = SWAP + RES

RES

1、進程當前使用的內存大小,包括使用中的mallocnew分配的堆空間和分配的棧空間,但不包括swap out量;

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

3、如果申請10MB的內存,實際使用1MB,它只增長1MB,與VIRT相反;

4、關於庫占用內存的情況,它只統計加載的庫文件所占內存大小。

5RES = CODE + DATA

SHR

1、除了自身進程的共享內存,也包括其他進程的共享內存;

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

3、計算某個進程所占的物理內存大小公式:RES – SHR

4swap 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM