使用比可用内存更多的内存

时间:2016-09-20 20:09:55

标签: python windows memory memory-management

我编写了一个扩展素数数据库的程序。这个程序是用python编写的,可以在带有8GB RAM的Windows 10(x64)上运行。

程序存储它在list integers中找到的所有素数以进行进一步计算,并在运行时使用大约6-7GB的RAM。然而,在某些运行期间,此数字已降至100MB以下。然后,内存使用率在运行期间保持较低,但随着更多数字添加到主数组中而增加。请注意,并非所有运行都会导致内存丢失。

使用任务管理器测量的内存使用量

这些看似随意的下降让我有了以下理论:

  1. 我的代码中存在一个错误,导致关键数据丢失并导致结果混乱(最有可能但结果不支持)
  2. Python恰好在一段时间后非常好地优化了我的代码。
  3. Python或Windows通过清除未使用那么多的素数数组的部分来补偿我对RAM的过度使用。 (最终导致计算错误)
  4. Python或Windows通过分配磁盘空间而不是ram来补偿我对RAM的过度使用。
  5. 问题

    1. 这种记忆力下降的原因是什么?
    2. python如何处理使用超过可用RAM的程序?
    3. Windows如何处理使用超过可用RAM的程序?

2 个答案:

答案 0 :(得分:5)

1,2和3是不正确的理论。

4是正确的。 Windows(不是Python)正在将一些进程内存转移到交换空间。这几乎完全对您的应用程序透明 - 您不需要做任何特殊的事情来响应或处理这种情况。您将注意到的唯一事情是,当向磁盘写入和读取信息时,您的应用程序可能会变慢。但这一切都是透明的。有关详细信息,请参阅https://en.wikipedia.org/wiki/Virtual_memory

答案 1 :(得分:1)

你听说过分页吗? Windows将一些ram(暂时没有使用过)转储到硬盘驱动器上,以防止计算机耗尽或撞坏并最终崩溃。

只有Windows处理内存管理。虽然,如果你使用Windows 10,它也会压缩你的内存,有点像zip文件。