如何诊断Python程序中潜在的内存泄漏?

2024-04-25 13:21:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带有256MB RAM的嵌入式Linux系统。它上有一个大的代码库,大多数是C++,但有些实用程序是在Python中。我们有一个Python“包管理器”,它使用Python apt module(我们将更新作为.deb文件分发)来处理对系统的更新。在运行时,这个应用程序使用了系统RAM的很大一部分。我用top监视RAM的使用情况,查看Python进程的RSS(也许这不是分析进程内存使用情况的有效方法吗?接受建议)。在

线

    cache = apt.Cache() 

它被周期性地调用来检查系统的状态,每次被调用时似乎要消耗大约20MB的内存,而且看起来并没有返回内存。我尝试删除函数末尾的缓存对象并运行gc.收集(),这似乎没什么帮助。在

如何减少这个程序的内存使用?在

平台是armcortexa8,运行linux3.2、debianwheezy和python2.7.3。在


Tags: 文件内存代码实用程序应用程序管理器进程linux
2条回答

Garbage Collector interface modulegc)正是您可以在这里用来进一步调试这个问题的。在

要调试泄漏的程序调用:

gc.set_debug(gc.DEBUG_LEAK)

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

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

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

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

$ sudo apt-get clean

希望这有帮助!在

相关问题 更多 >