我用python3.4和Tkinter制作了一个应用程序。 我的应用程序运行几个(3-5)线程,每个线程执行以下操作。你知道吗
我在基于XP的windows嵌入式操作系统上使用我的应用程序, 我用TaskManager观察内存使用情况, 因为我想在不关机的情况下长时间(可能超过一个月)运行我的应用程序。你知道吗
那么,问题是
内存使用(物理)逐渐增加,但有时急剧减少。 所以总的来说还可以。你知道吗
但从长远来看,虚拟内存大小(VMSize)正在增加。 例如,当我启动app时,VMSize是26MB。 第二天,它变成了29MB, 第二天,它变成了32MB。 它有时会略有增加,有时会略有减少(例如20KB)。 但总体上呈上升趋势。 这不是那么大的量,但“增加”让我不安。你知道吗
我以为垃圾收集会有帮助,所以我插入了gc.收集()在我的代码上, 每3小时调用一次。 但什么都没变,打印出来(gc.收集())始终显示为0(应用程序启动后立即显示除外)。你知道吗
这是内存泄漏吗?你知道吗
我读过del()的定义,引用循环会导致Python的内存泄漏, 但我从不自己定义del()。你知道吗
先谢谢你。你知道吗
我自己发现了原因,所以我把它写在这里,结束这个问题。你知道吗
内存泄漏的原因是我从多个线程调用tkinter函数。 tkinter不是线程安全的,所以我违反了它的规则。你知道吗
我修改了我的程序,所以只有主线程使用tkinter函数 内存泄漏已经消失。你知道吗
谢谢你。你知道吗
相关问题 更多 >
编程相关推荐