1. 程式人生 > >Private Bytes,Working Set,Virtual Size的區別

Private Bytes,Working Set,Virtual Size的區別

private AI 物理內存 映射文件 如果 com 函數 length aid

Private Bytes

進程占用內存、進程申請的內存和進程所依賴的動態庫申請的內存總和,不包括進程所依賴的動態庫占用的內存、mmap的內存。

不一定在物理內存上,可以被交換到磁盤上,所以可以比Working Set大。

由於也包括進程依賴動態庫所申請的內存,所以不能判斷內存泄漏是由進程導致的還是動態庫導致的。

Working Set

進程和進程所依賴的動態庫和mmap的內存占用的物理內存大小。

Virtual Size

進程和進程所依賴的動態庫和mmap的內存一共所占用的虛擬內存,包括在物理內存上和磁盤上的總空間,所以一定比Working Set大,也比Private Bytes大。

mmap名詞解釋:

mmap是一種內存映射文件的方法。mmap將一個文件或者其它對象映射進內存。文件被映射到多個頁上,如果文件的大小不是所有頁的大小之和,最後一個頁不被使用的空間將會清零。

mmap在用戶空間映射調用系統中作用很大。

  頭文件 <sys/mman.h>   函數原型   void* mmap(void* start,size_t length,int prot,int flags,int fd,off_t offset);   int munmap(void* start,size_t length);

mmap 必須以PAGE_SIZE

為單位進行映射,而內存也只能以頁為單位進行映射,若要映射非PAGE_SIZE整數倍的地址範圍,要先進行內存對齊,強行以PAGE_SIZE的倍數大小進行映射。

Private Bytes,Working Set,Virtual Size的區別