操作系统什么时候会在内存用完之前决定释放内存映射文件的页面?

问题描述 投票:2回答:1

我正在做一个在Linux上运行的程序,它使用mmap将一些文件映射到内存。

每一个文件都会被读取(用指针在内存中行走)。

在pmap中你可以清楚地看到一些文件是如何完全映射到内存中的(当完全读取时),而其他文件则没有。

Address           Kbytes     RSS   Dirty Mode  Mapping
00007f8b09c3a000   26688   26664       0 rw-s- /mnt/ebs-metadata/fullyread.dat
00007f89ecc0c000   15936    4704       0 rw-s- /mnt/ebs-metadata/partiallyread.dat

我们继续映射文件,在某一时刻,我们得到一个错误,说不能分配更多的内存。

是的,我们可以卸载很多文件,我们会这样做)。

我的问题是:为什么操作系统不从物理内存中卸载许多页(甚至是完整的文件),直到下一次使用,而不是抛出 "无法分配内存"?

linux memory memory-mapped-files
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.