3

我有一个带有 256MB RAM 的嵌入式 Linux 系统。它上面运行着一个大型代码库,大部分使用 C++,但一些实用程序使用 Python。我们有一个 Python “包管理器”,它使用Python apt 模块处理系统更新(我们将更新分发为 .deb 文件)。运行时,此应用程序使用大部分系统 RAM。我正在使用 top 监视 RAM 使用情况,查看 Python 进程的 RSS(也许这不是分析进程内存使用情况的有效方法?欢迎提出建议)。

线

    缓存 = apt.Cache() 

定期调用它来检查系统状态似乎每次调用都会消耗大约 20MB,而且看起来并没有返回这个内存。我尝试在函数末尾删除缓存对象并运行 gc.collect(),但这似乎没有多大帮助。

如何减少该程序的内存使用量?

该平台是 ARM Cortex A8,运行 Linux 3.2、Debian Wheezy 和 Python 2.7.3。

4

2 回答 2

6

垃圾收集器接口模块( gc) 正是您可以在此处进一步调试此问题的工具。

要调试泄漏的程序调用:

gc.set_debug(gc.DEBUG_LEAK)

这会将有关垃圾收集的调试信息输出到您的控制台中。

为了进一步调试,gc模块提供了更多功能,包括列出垃圾收集器跟踪的所有对象、禁用/启用收集器或手动触发垃圾收集的能力。

如果您没有泄漏并且只想降低内存使用量,请尝试使用gc.set_threshold在内存使用量较低的点触发垃圾收集。

于 2013-07-12T21:26:58.580 回答
0

clean命令用于通过清理从本地存储库中检索(下载)的 .deb 文件(包)来释放磁盘空间。

$ sudo apt-get clean

希望这可以帮助!

于 2013-07-12T21:26:48.497 回答