#include #define SIZE (4096*1024 * 256) #define PAGE_SIZE 4096 main() { char *addr; int i; addr = mmap(0, SIZE, PROT_WRITE|PROT_READ, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); if (addr == MAP_FAILED) { perror("Can't mmap"); exit(1); } if (madvise(addr, SIZE, MADV_MERGEABLE)) { perror("Can't madvise"); exit(1); } for (i = 1; i < SIZE/PAGE_SIZE; i += 2) munmap(addr + i * PAGE_SIZE, PAGE_SIZE); while (1) { for (i = 0; i < SIZE/PAGE_SIZE; i += 2) { *(addr + i * PAGE_SIZE) = (char)0; } sleep(10); } }