这可能是一个愚蠢的问题,但是,例如,如果我正在使用非常大的阵列,在我的 2GB 计算机上占用 2.1GB 的 RAM,有没有办法根据需要从我的硬盘中借用额外的 0.1GB?
问问题
1704 次
3 回答
2
您的操作系统已经这样做了(Windows、*nix)。它被称为虚拟内存。
于 2012-12-31T01:31:06.293 回答
0
是的。它是虚拟内存的一部分,特别是交换。大多数现代操作系统都可以做到这一点,而程序员不必担心。
当物理 RAM 耗尽时,硬盘将用作额外内存。这非常慢,因为硬盘的访问时间(毫秒)比 DRAM 的访问时间(纳秒)慢一百万倍。
如果可能,建议增加 RAM。
于 2012-12-31T01:33:52.467 回答
0
正如其他人所说,是的,系统已经有了虚拟内存。
但是,您可以通过另一种方式利用这一点。您可以使用内存映射文件让系统直接将数组映射到磁盘。
在写入内存(数组)时以这种方式使用它,系统将使用它的虚拟内存管理系统来使用磁盘。您可能会问,这与操作系统将执行的标准 VMM 有何不同?好处是它不会使用标准交换空间(Windows 中的页面文件),因此空间是“内存”,可供系统的其余部分使用。
你仍然有大量的资源使用,但你可以通过释放交换空间来获得收益,实际上,你可以借用更多的虚拟内存。您获得的另一个优点是没有数据重复。IE。如果您正在加载大型数据集,那么您只需将磁盘空间映射到内存,反之亦然以进行写入。
于 2012-12-31T01:45:38.750 回答