This question already has an answer here:
Increase of virtual memory without increse of VmSize
(1个答案)
5年前关闭。
我在linux中看到了一个生成进程内存快照的类生成器。ProcReader从/proc/[pid]/status读取信息,然后为该进程生成内存快照。我想考这门课。所以我写了下面的代码。
问题:
proc[pid]\status中的VmPeak和VmSize没有更改。我不明白。为什么?
(1个答案)
5年前关闭。
我在linux中看到了一个生成进程内存快照的类生成器。ProcReader从/proc/[pid]/status读取信息,然后为该进程生成内存快照。我想考这门课。所以我写了下面的代码。
ShowMemSnapShot();
unsigned char* pDynArray = NULL;
pDynArray = new unsigned char[2048];
ShowMemSnapShot();
pDynArray[0] = 1;
delete [] pDynArray;
ShowMemSnapShot();
问题:
proc[pid]\status中的VmPeak和VmSize没有更改。我不明白。为什么?
最佳答案
我不确定,但这可能与你的分配规模有关。proc条目监视对进程的内核内存分配,它们在x86平台上以4K页的形式发布。同样是新的,它在幕后使用malloc,当它需要更多堆空间时,可能会占用一堆页面。
我建议你分配一块相当大的内存,比如1MB
pDynArray=新的无符号字符[0x100000];
10-07 17:15