Dav*_*ave 8 python memory-leaks
我正在努力解决Python应用程序中的内存泄漏问题.
事情就是这样 - 它实际上只发生在Windows Server 2008(而不是R2)上,而不是早期版本的Windows上,它看起来也不像在Linux上发生的那样(尽管我在Linux上的测试几乎没有那么多) ).
要解决它,我在垃圾收集器上设置调试:
gc.set_debug(gc.DEBUG_UNCOLLECTABLE | gc.DEBUG_INSTANCES | gc.DEBUG_OBJECTS)
Run Code Online (Sandbox Code Playgroud)
然后,我定期记录gc.garbage的内容.
事实是,gc.garbage总是空的,但我的内存使用率却在上升和上升.
非常令人费解.
Tho*_*ers 25
如果gc.garbage中没有任何垃圾,那么我不确定你要通过启用GC调试来做什么.当然,它会告诉你哪些对象被认为是清理,但如果最终没有无法清理的循环引用,那就不是特别有趣了.
如果您的程序根据操作系统使用越来越多的内存,通常会有四种不同的情况:
gc模块无法清除的对象之间的循环引用(通常因为其中一个有__del__方法.)根据你的描述,它听起来不太可能是#1(因为它在任何操作系统上的行为都相同)而且显然也不是#2(因为gc.garbage中没有任何内容.)考虑到#3,Windows(通常)有一个内存分配器,分散的分配是众所周知的糟糕,但Python的obmalloc前端与它的前端malloc().它可能仍然是Windows Server 2008系统库中的特定问题,使其看起来像您的应用程序正在使用越来越多的内存.或者它可能是#4,C/C++扩展模块,或Python或扩展模块使用的DLL,内存泄漏.
| 归档时间: |
|
| 查看次数: |
5664 次 |
| 最近记录: |