boost shared_memory_object将内容存储在磁盘中?

时间:2013-06-20 05:26:18

标签: boost interprocess boost-interprocess

我基于单个数据库训练多个网络。

因此,为了加快速度并减少磁盘读取,我使用boost提供的shared_memory_object类。由于实验室工作站当前不可用,我将我的代码迁移到了我的个人计算机。

在实验室工作站上,主机程序成功将所有数据读入内存。但在我的电脑上,奇怪的是它在系统驱动器上创建了一个文件,而不是将数据存储在内存中。整个数据库大约3.7 GB;实验室工作站具有32 GB内存并运行Windows Server 2008 R2;我的电脑有8 GB内存并运行Windows 7.

应该有足够的内存来存储数据。所以为什么?是否有某些方法可以强制程序将所有数据保存在内存中?

1 个答案:

答案 0 :(得分:0)

即使用内存映射文件作为共享内存的后备,因此在任一计算机上的磁盘上都需要物理文件。操作系统仍然会对该文件的内容进行大量缓存,因此如果空间可用,它实际上仍然可以将其完全缓存在RAM中。

如果您不喜欢查看磁盘上实际存在的文件名,那么您可以尝试 而是windows_shared_memory。它将使用从系统交换文件中获取的空间作为共享内存的支持。