我具体询问的是 Linux,但显然,适用于一般 Unix(即 POSIX 或类似)的答案会更好。
Linux 使用空闲内存(即尚未分配给进程的内存)来缓存文件系统元数据(也可能是其他内容)。当进程请求额外内存时,这些缓存会缩小以腾出空间。
我的问题:是否有一种方法可以让应用程序分配仅用作缓存的内存?也就是说,进行分配时知道当可用内存不足并且其他进程的内存分配无法得到服务时,允许内核以某种方式夺取该内存区域的控制权。
答案1
你也许可以使用madvise(2)
为此MADV_FREE
——它将页面标记为可回收,但不一定立即删除它们,并且可以读回数据。如果您恢复所有零(每页),您就会知道页面已消失。