2

我有一个大的值矩阵,占用大约 2GB 的 RAM。

我需要形成这个矩阵的副本,然后可以将原件换出到磁盘,以便稍后加载。这个矩阵的内容很重要。最初计算它很昂贵,因此您不能轻易将其丢弃并重新创建它。将矩阵放到磁盘上,然后从磁盘重新加载它比从头开始重新计算要快。

有没有比我所拥有的更简单或更好的方法来指定一段内存暂时放在磁盘上直到下一次访问,即:

当不需要资源(2GB 矩阵)时

  • 打开一个文件
  • 将文件写入磁盘
  • 释放内存

当需要资源时

  • 打开文件
  • 读入矩阵
  • 从磁盘中删除文件

我遇到了文件映射但我不确定这是正确的使用方法

4

2 回答 2

3

看看内存映射文件

内存映射文件 (MMF) 提供了一种独特的内存管理功能,它允许应用程序访问磁盘上的文件,就像访问动态内存一样——通过指针。

操作系统将非常有效地将原始矩阵的部分交换到磁盘或从磁盘交换。

于 2012-06-28T21:44:41.153 回答
2

假设矩阵不需要在程序重新启动后继续存在,请将您的应用程序编译为 64 位,然后将矩阵留在内存中。操作系统会在内存压力下自动换出最少使用的内存页面。

然而,即使在现代硬件上,您也将拥有超过 2+2 GB 1的 RAM,而且很有可能一切都将保留在 RAM 中。

1原始矩阵 + 副本。

于 2012-06-28T21:46:19.030 回答