Windows任务管理器:Python应用程序内存使用增量

2024-10-02 20:32:26 发布

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

我用python3.4和Tkinter制作了一个应用程序。 我的应用程序运行几个(3-5)线程,每个线程执行以下操作。你知道吗

  1. recvfrom()的无休止循环,用于从套接字(UDP)获取消息
  2. 显示消息并将其写入文件的循环

我在基于XP的windows嵌入式操作系统上使用我的应用程序, 我用TaskManager观察内存使用情况, 因为我想在不关机的情况下长时间(可能超过一个月)运行我的应用程序。你知道吗

那么,问题是

内存使用(物理)逐渐增加,但有时急剧减少。 所以总的来说还可以。你知道吗

但从长远来看,虚拟内存大小(VMSize)正在增加。 例如,当我启动app时,VMSize是26MB。 第二天,它变成了29MB, 第二天,它变成了32MB。 它有时会略有增加,有时会略有减少(例如20KB)。 但总体上呈上升趋势。 这不是那么大的量,但“增加”让我不安。你知道吗

我以为垃圾收集会有帮助,所以我插入了gc.收集()在我的代码上, 每3小时调用一次。 但什么都没变,打印出来(gc.收集())始终显示为0(应用程序启动后立即显示除外)。你知道吗

这是内存泄漏吗?你知道吗

我读过del()的定义,引用循环会导致Python的内存泄漏, 但我从不自己定义del()。你知道吗

先谢谢你。你知道吗


Tags: 文件内存程序运行应用程序消息定义tkinter情况
1条回答
网友
1楼 · 发布于 2024-10-02 20:32:26

我自己发现了原因,所以我把它写在这里,结束这个问题。你知道吗

内存泄漏的原因是我从多个线程调用tkinter函数。 tkinter不是线程安全的,所以我违反了它的规则。你知道吗

我修改了我的程序,所以只有主线程使用tkinter函数 内存泄漏已经消失。你知道吗

谢谢你。你知道吗

相关问题 更多 >