【发布时间】:2016-04-07 13:54:18
【问题描述】:
我使用 Python 3.4 和 Tkinter 制作了一个应用程序。 我的应用程序运行多个 (3-5) 线程,每个线程在下面执行。
- recvfrom() 无限循环从 socket(UDP) 获取消息
- 显示消息并将其写入文件的无限循环
我在基于 XP 的 Windows 嵌入式操作系统上使用我的应用程序, 我用 TaskManager 观察内存使用情况, 因为我想在不关机的情况下长时间(可能超过一个月)运行我的应用程序。
那么,问题来了
Mem Usage(physical) 逐渐增加,但有时会急剧减少。 所以总体看起来还不错。
但从长远来看,虚拟内存大小(VMSize)正在增加。 例如,当我启动应用程序时,VMSize 为 26MB。 第二天,它变成了29MB, 第二天,它变成了 32MB。 它有时会增加一点,有时会减少一点(例如 20KB)。 但总体呈上升趋势。 这不是那么大的音量,但“增加”让我感到不安。
我希望 GarbageCollection 会有所帮助,所以我在我的代码中插入了 gc.collect(), 这样它将每 3 小时调用一次。 但是什么都没有改变,并且 print(gc.collect()) 总是显示为 0(除了在应用程序本身启动之后)。
这是内存泄漏吗?
我阅读了 del() 的定义,引用循环会导致 Python 中的内存泄漏, 但我从不自己定义 del()。
提前谢谢你。
【问题讨论】:
标签: python sockets memory-leaks tkinter