2017年10月31日 星期二

記憶體使用量 private bytes, working set 和 virtual bytes 的意義

使用 procexp 查看 process 時會顯示 private bytes 跟 working set,在這邊記錄一下這些跟記憶體使用量有關的 term

Private Bytes

private bytes 是 process 要求的記憶體,不是 process 實際使用到的記憶體,private 的意思是它不包含 shared DLLs 之類的 memory-mapped files,private bytes 也不一定等於 physical memory 用量,它可以包含被 paged 到 disk 的頁面

Working Set

working set 表示被 process 使用到的 physical 記憶體使用量,但是跟 private bytes 不同,working set 包含 memory-mapped file 這個值跟工作管理員理看到的 memory usage 是一樣的

有一點可能會讓人困惑,standby page 雖然也是 physical 但是並沒有包含在 working set 中,所以會發現程式最小化之後 memory usage 突然下降,是因為那些消失的 memory 頁面變成 standby page 了

Virtual Bytes

virtual bytes 是 process 使用的所有 virtual address space 用量,就等於是 working set 加上 standby page 加上被 paged out 到 disk 的 memory pages

沒有留言:

張貼留言