Linuxで実行中のプログラムのメモリ消費量を測定しようとしています。1Gメモリを割り当てるCプログラムを作成し、時間を使用して「最大常駐セットサイズ」を出力しました。
/usr/bin/time -f '%Uu %Ss %er %MkB %x %C' ./takeMem 1000000000
0.85u 0.81s 1.68r **3910016kB** 0 ./takeMem 1000000000
からman time
、このようなプログラムの「最大常駐セットサイズ」は、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;
}