1

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

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

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

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

4

1 回答 1

0

那就是使用内存映射文件作为共享内存的支持,因此任何一台机器上的磁盘上都需要一个物理文件。操作系统仍然对该文件的内容进行大量缓存,因此如果空间可用,它实际上仍然可以将其完全缓存在 RAM 中。

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

于 2013-06-21T19:04:38.470 回答