我有一个大的值矩阵,占用大约2GB的RAM。
我需要形成这个矩阵的副本,然后原件可以换成磁盘,以便稍后加载。该矩阵的内容很重要。最初计算它是昂贵的,所以你不能轻易扔掉它并重新创建它。将矩阵丢弃到磁盘然后从磁盘重新加载它比从头重新计算它更快。
是否有更简单的或更好的方法来指定临时放在磁盘上的内存部分,直到下次访问,而不是我拥有的内容,这是:
我遇到File mapping但我不确定这是正确的使用
答案 0 :(得分:3)
内存映射文件(MMF)提供了一种允许应用程序的独特内存管理功能 以与访问动态内存通过指针相同的方式访问磁盘上的文件。
操作系统将非常有效地将部分原始矩阵交换到磁盘上。
答案 1 :(得分:2)
假设矩阵不需要在程序重启后继续存在,请将应用程序编译为64位并将矩阵留在内存中。在内存压力下,操作系统将自动换出最少使用的内存页面。
然而,即使是在一个温和的现代硬件上,你也会有超过2 + 2 GB 1 的RAM,并且很有可能一切都将保留在RAM中。
1 原始矩阵+副本。