最大驻地尺寸没有意义

我正在尝试在Linux中测量正在运行的程序的内存消耗。 我写了一个C程序来分配1G内存,然后用时间输出“最大驻留集大小”:

/ usr / bin / time -f'%Uu%Ss%er%MkB%x%C'./takeMem 1000000000

0.85u 0.81s 1.68r 3910016kB 0 ./takeMem 1000000000

从“男人时间”来看,我应该解释为这样的程序“最大驻留设置大小”,尽pipe程序只分配了1G内存,但仍然需要3.9G的内存。 它没有任何意义。

谁能知道发生了什么事情导致“最大驻地集合大小”高?

C代码非常简单:

#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int memLength = atoi(argv[1]); fprintf(stderr, "Allocating %d memory...", memLength); unsigned char* p = new unsigned char[memLength]; fprintf(stderr, "Done\n"); while (true) { int i = rand() % memLength; char v = rand() % 256; p[i] = v; } return 0; } 

我前一阵子偶然发现 这是GNU时间的一个错误,值是4倍太大,因为它假定页面大小,并将其转换为kB,即使它已经是KB。 你可能想检查:

http://groups.google.com/group/gnu.utils.help/browse_thread/thread/bb530eb072f86e18/83599c4828de175b

http://forums.whirlpool.net.au/archive/1693957