python - 为什么运行 SQLite(通过 python)会导致内存填满 "unofficially"?

标签 python sqlite memory ubuntu memory-leaks

我正在使用 SQLite 处理一些大型(数千万条记录,大约 10gb)数据库文件。我正在使用这个 python 的标准接口(interface)。

当我尝试将数百万条记录插入数据库或在某些列上创建索引时,我的计算机会慢慢耗尽内存。如果我查看正常的系统监视器,看起来大部分系统内存都是空闲的。但是,当我使用 top 时,看起来我几乎没有可用的系统内存。如果我按进程的内存消耗对进程进行排序,那么它们中的任何一个都不会使用超过我内存的百分之几(包括运行 sqlite 的 python 进程)。

所有的内存都去哪儿了?为什么 top 和 Ubuntu 的系统监视器对我有多少系统内存存在分歧?为什么 top 告诉我我的可用内存很少,同时不显示哪个进程正在使用所有内存?

我正在运行 Ubuntu 11.04、sqlite3、python 2.7。

最佳答案

10 比 1 表示你对 linux 的文件系统缓冲区/缓存感到困惑


  • ofstream leaking memory
  • https://superuser.com/questions/295900/linux-sort-all-data-in-memory/295902#295902

  • 通过做测试它(以root身份)
    echo 3 > /proc/sys/vm/drop_caches
    

    关于python - 为什么运行 SQLite(通过 python)会导致内存填满 "unofficially"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6491856/

    相关文章:

    java - android SQLITE 数据库应用程序在运行 getAllComments() 方法时在创建时崩溃

    Java 堆行为

    python - PyUSB 找不到设备

    python - 从 DataFrame 中删除包含 0 到 9 数字的行

    python - 如何使用 pyplot 旋转绘图 x 轴和 y 轴

    python - 无法使用提供的凭据登录

    sql - 如何更新循环中 SELECT 返回的行?

    java - 如何保护android中的sqlite db不被盗

    memory - MPI Fortran 代码 : how to share data on node via openMP?

    performance - perfmon如何获取 "in Use"内存