我正在学习虚拟内存的概念,但这个问题让我困惑了一段时间。由于大多数现代计算机都使用虚拟内存,因此当程序执行时,操作系统应该在RAM和磁盘之间输入和输出数据。但为什么我们仍然遇到“内存不足”问题?如果我误解了这个概念,你能否纠正我?我非常感谢你的解释。
PS:例如,我正在分析计算集群上模拟的大量数据(> 100G)输出,并将数据读入C数组。系统经常崩溃并抱怨内存错误。
答案 0 :(得分:0)
第一:现代计算机确实使用虚拟内存,但这里没有魔力。内存不是无中生有的。虚拟内存方案通常允许大容量存储子系统(即硬盘)的一部分用于保存(希望)不常使用的过程部分。
此技术允许进程使用比RAM更多的内存。但是没有什么是无限的最终所有RAM和硬盘驱动器资源都将耗尽,并且该过程将出现内存不足错误。
第二:操作系统在进程可能使用的内存上设置上限并非闻所未闻。再次点击该上限,该过程会出现内存不足错误。
答案 1 :(得分:0)
即使使用虚拟内存,可用内存也不是无限制的。
限制1)建筑限制。处理器和操作系统将放置一些最大虚拟内存限制。
限制2)系统参数。许多操作系统配置最大虚拟内存大小。
限制3)处理配额。许多操作系统都有进程配额限制最大虚拟内存大小。
限制4)系统资源。特别是页面文件空间。