0

我已经使用了一个类 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 没有变化。我不明白这一点。为什么?

4

1 回答 1

1

我不确定,但这可能与您的分配大小有关。proc 条目监视内核内存分配给您的进程,这些在 x86 平台上以 4K 的页面发布。还有一个新的,它在后台使用 malloc,当它需要更多的堆空间时,它可能会抓取一堆页面。

我建议你分配一块像样的内存——比如 1MB

pDynArray = 新的无符号字符[0x100000];

于 2013-11-12T16:08:04.253 回答