触发了大量的大页的回收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); }