#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 ", 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 "); int ii = 1024*100; next: if (ii-- < 0) goto out; else { // if (ii % 10000 == 2) // printf("ii: %d ", ii); // printf("On: %d ", 100 - ii * 100 / 1024*100); } ptr = malloc(4096); ptr[0] = 1; goto next; out: printf("write done "); while(1); }