我用Python3.4和Tkinter开发了一个应用程序。我的应用程序运行几个线程(3-5),每个线程在下面运行。
我在基于XP的windows嵌入式操作系统上使用我的应用程序,我用TaskManager观察内存的使用情况,因为我想在不关机的情况下运行我的应用程序很长时间(可能超过一个月)。
那么,一个问题是
Mem的使用(物理)逐渐增加,但有时急剧减少。所以总体上看没问题。
但是,虚拟内存大小(VMSize)随着长期视图的增加而增加.例如,当我启动app时,VMSize是26 was。第二天,它变成29 it,第二天,它变成32 it。有时增加一点,有时减少一点(例如,20 It )。但总体而言,这一数字呈上升趋势。这不是很大的数量,但“增加”让我感到不安。
我希望GarbageCollection能够提供帮助,所以我在代码中插入了gc.collect(),以便每3小时调用一次。但是没有什么变化,而print(gc.collect())总是显示0(除了在应用程序启动之后)。
这是内存泄漏吗?
我阅读了del()的定义,引用周期可能导致Python中的内存泄漏,但我从不自己定义del()。
提前谢谢你。
发布于 2016-07-20 14:03:19
我自己发现了原因,所以我把它写在这里,结束这个问题。
内存泄漏的原因是我从多个线程调用tkinter函数。tkinter不是线程安全的,所以我违反了它的规则。
我修改了我的程序,这样只有主线程使用tkinter函数,然后内存泄漏就消失了。
谢谢。
https://stackoverflow.com/questions/36478336
复制相似问题