我有一个256MB RAM的嵌入式Linux系统。它上面运行着一个很大的代码库,大多数都是用C ++编写的,但有些实用程序是用Python编写的。我们有一个Python“包管理器”,它使用Python apt module处理系统更新(我们将更新分发为.deb文件)。运行时,此应用程序使用大部分系统RAM。我正在使用top监视RAM使用情况,查看Python进程的RSS(可能这不是分析进程内存使用情况的有效方法吗?可以参考建议)。
该行
cache = apt.Cache()定期调用
来检查系统的状态,每次调用时似乎消耗大约20MB,并且看起来不会返回此内存。我尝试在函数末尾删除缓存对象并运行gc.collect(),这似乎没什么帮助。
如何减少此程序的内存使用量?
该平台是ARM Cortex A8,运行Linux 3.2,Debian Wheezy和Python 2.7.3。
答案 0 :(得分:4)
Garbage Collector interface module(gc
)正是您可以用来进一步调试此问题的。
调试泄漏的程序调用:
gc.set_debug(gc.DEBUG_LEAK)
这会将有关垃圾收集的调试信息输出到您的控制台。
为了进一步调试,gc
模块提供了更多功能,包括列出垃圾收集器跟踪的所有对象,禁用/启用收集器或手动触发垃圾收集的功能。
如果您没有泄漏并且只想降低内存使用量,请尝试使用gc.set_threshold
在较低的内存使用点触发垃圾回收。
答案 1 :(得分:0)
clean
命令用于通过从本地存储库清除检索到的(下载的).deb文件(包)来释放磁盘空间。
$ sudo apt-get clean
希望这有帮助!