考虑一个使用大量页面大小的内存区域(比如64kB左右)的程序,每个内存区域的生命周期都相当短。(在我的特定情况下,这些是绿色线程的备用堆栈。)如何最好地分配这些区域,以便在该区域不再使用时可以将它们的页面返回给内核?天真的解决方案显然是简单地mmap每个区域,并在完成后立即再次munmap它们。不过,我觉得这是个坏主意,因为它们太多了。我怀疑VMM可能会在一段时间后开始严重扩展;但即使不是,我仍然对理论案例感兴趣。如果我只是mmap我自己一个巨大的匿名映射,我从中按需分配区域,有没有办法通过该映射为我完成的区域“打洞”?有点像madvise(MADV_DONTNEED),但不同之处在于