我开发了一个复杂的程序,其中一个线程池执行许多对象计划的任务。我有内存泄漏。
到目前为止,我已经检测到使用孔雀鱼,创建的对象的数量正在稳步增长,但它们并未被破坏。我怎么知道哪些物品没有被销毁/收集?
以下是我的代码的摘录:
# Memory Profiling
from guppy import hpy
import gc
class ThreadPool:
...
# Every 1 sec run:
gc.collect() # yes, this is paranoid...
print str(self.h.heap()).split('\n')[0]
结果是:
Partition of a set of 110304 objects. Total size = 15475848 bytes.
Partition of a set of 110318 objects. Total size = 15479920 bytes.
Partition of a set of 110320 objects. Total size = 15480808 bytes.
Partition of a set of 110328 objects. Total size = 15481408 bytes.
...
最后创建的对象是什么?是否有一些可以帮助的内省代码?
谢谢!