微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当应用程序需要更多RAM时,如何允许将一段内存换出到磁盘上?

我有一个大型的matrix,占用大约2GB的RAM。

我需要形成这个matrix的一个副本,然后原来可以换出到磁盘,稍后加载。 这个matrix的内容是重要的。 最初的计算是昂贵的,所以你不能轻易把它扔掉,重新创build它。 把matrix放到磁盘上,然后从磁盘上重新加载,比从头开始重新计算要快。

有没有更容易或更好的方式来指定一段内存暂时放在磁盘上,直到下一次访问比我有,这是:

当资源(2GBmatrix)不需要时

打开一个文件

文件写入磁盘

释放内存

何时需要资源

打开文件

阅读matrix

从磁盘删除文件

我遇到文件映射但我不知道这是正确的使用

尝试从用户模式进程创build全局文件映射对象失败

CreateFileMapping()用于写入文件长度未知的文本

mmap成功后总线错误

linux – 映射文件的非线性部分

环绕文件映射杀死性能

看看内存映射文件

内存映射文件(MMF)提供了独特的内存管理功能,允许应用程序以访问动态内存的相同方式访问磁盘上的文件(通过指针)。

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

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

然而,即使在一个现代化的硬件上,你也将拥有超过2 + 2 GB的内存,而且很可能所有内存都会留在内存中。

1原始矩阵+复制。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐