スレッドプールが多くのオブジェクトによって計画されたタスクを実行する複雑なプログラムを開発しました。メモリリークがあります。
これまでのところ、作成されたオブジェクトの数が着実に増加していることを guppy を使用して検出しましたが、それらは破棄されていません。どのオブジェクトが破棄/収集されていないかを知るにはどうすればよいですか?
これが私のコードの抜粋です:
# 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.
...
最後に作成されたオブジェクトは何ですか? 役立つイントロスペクション コードはありますか?
ありがとうございました!