我的程序处理需要存储在连续内存中的大型数据集(几个千兆字节)。使用
由于该程序通常只会一次处理一小部分,所以我的问题是,是否使用内存映射文件会提供优势(即
我试图避免构建流机制,每次仅加载文件的一部分,并依靠系统的vm分页。
std::allocator
(即malloc
或new
)分配内存会导致系统停顿,因为大量的虚拟内存被保留,物理内存被填满。由于该程序通常只会一次处理一小部分,所以我的问题是,是否使用内存映射文件会提供优势(即
mmap
或Windows等效方法)。即创建一个大型稀疏临时文件并将其映射到虚拟内存。或者是否有另一种技术可以改变系统的分页策略,使每次加载到物理内存中的页面更少。我试图避免构建流机制,每次仅加载文件的一部分,并依靠系统的vm分页。