多线程程序内存消耗增加,但对象的大小和引用计数似乎没有

时间:2016-12-17 12:59:47

标签: python multithreading memory-leaks garbage-collection

我正在运行一个多线程程序,它运行的时间越长,消耗的内存越多。

我试图通过检查对象的大小及其引用计数随时间的变化来检查发生了什么:

total_obj_size = sum([sys.getsizeof(i) for i in gc.get_objects()])
total_ref_count = sum([sys.getrefcount(i) for i in gc.get_objects()])
leaking_obj_count = objgraph.get_leaking_objects()

但他们保持不变,随着时间的推移没有增长。 我应该在哪里看下一个?

gc.get_objects()是从所有线程返回对象还是只返回从中运行的对象? (我从主线程运行它?)

如果线程被终止,内存消耗将恢复正常(所以我可以在每个x secons重新启动它们),但有没有办法看看为什么内存消耗会随着gc或objgraph等模块的增长而增长?

0 个答案:

没有答案