触发了大量的大页的回收why?
#include <stdio.h>
#include <fcntl.h>
#include <sys/mman.h>
int main()
{
int i, fd, pid;
char *ptr;
printf("alloc vm");
ptr = malloc(4096*1024*100);
for (i = 0; i < 1000*100; i++) {
ptr[i*4096] = 1;
if (!(i%2000)) {
printf("%d\n", i);
}
}
while(1);
}
有大量的大页的回收,为什么映射了这么多的大页呢?
mmap区域换成普通的大小,这下都是普通的page了,没有了大页的映射了,都是普通的4k小页
#include <stdio.h>
#include <fcntl.h>
#include <sys/mman.h>
int main()
{
int i, fd, pid;
char *ptr;
printf("alloc vm\n");
int ii = 1024*100;
next:
if (ii-- < 0)
goto out;
else {
// if (ii % 10000 == 2)
// printf("ii: %d\n", ii);
// printf("On: %d\n", 100 - ii * 100 / 1024*100);
}
ptr = malloc(4096);
ptr[0] = 1;
goto next;
out:
printf("write done\n");
while(1);
}
浙公网安备 33010602011771号