我已经使用了一个Class ProcReader来生成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];