我编写了一个扩展素数数据库的程序。这个程序是用python编写的,可以在带有8GB RAM的Windows 10(x64)上运行。
程序存储它在list
integers
中找到的所有素数以进行进一步计算,并在运行时使用大约6-7GB
的RAM。然而,在某些运行期间,此数字已降至100MB
以下。然后,内存使用率在运行期间保持较低,但随着更多数字添加到主数组中而增加。请注意,并非所有运行都会导致内存丢失。
使用任务管理器测量的内存使用量
这些看似随意的下降让我有了以下理论:
答案 0 :(得分:5)
1,2和3是不正确的理论。
4是正确的。 Windows(不是Python)正在将一些进程内存转移到交换空间。这几乎完全对您的应用程序透明 - 您不需要做任何特殊的事情来响应或处理这种情况。您将注意到的唯一事情是,当向磁盘写入和读取信息时,您的应用程序可能会变慢。但这一切都是透明的。有关详细信息,请参阅https://en.wikipedia.org/wiki/Virtual_memory。
答案 1 :(得分:1)
你听说过分页吗? Windows将一些ram(暂时没有使用过)转储到硬盘驱动器上,以防止计算机耗尽或撞坏并最终崩溃。
只有Windows处理内存管理。虽然,如果你使用Windows 10,它也会压缩你的内存,有点像zip文件。