我正在编写一个程序,它使用 mmap 文件来保存一个巨大的缓冲区,该缓冲区组织为一个 64 MB 块的数组。
这些块用于聚合通过网络从不同主机接收到的数据。因此,预先不知道写入每个块中的总数据大小。大多数时候它只有 2MB,但在某些情况下可以达到 20MB 或更多。
数据不会在缓冲区中停留很长时间。不到一秒钟后,90% 被删除,其余的被传输到另一台主机。
我想知道是否有办法告诉虚拟内存管理器在删除数据时内存页面不再脏。
当使用和释放块来控制虚拟内存时,我应该使用 mmap 和 munmap 吗?这样做的开销是多少?此外,一些同事对分配如此大的 mmap 空间对性能的影响表示担忧。我希望它表现得像一个交换文件,因此只考虑脏页。