使用的内存比可用内存多

Fel*_* ZY 2 python memory windows memory-management

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

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

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

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

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

问题

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

Gre*_*ill 5

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

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