import gc, json
class leak(object):
def __init__(self):
pass
gc.set_debug(gc.DEBUG_LEAK)
while True:
leak_ = leak()
json.dumps(leak_.__dict__, indent=True)
gc.collect()
print(f"garbage count: {len(gc.garbage)}")
Python 3.6.3で次のコードを使用すると、ガベージカウントが増加し続け、タスクマネージャは安定したメモリ増加を記録します。json.dumpsはリークしますか?
ただし、インデントなしのjson.dumps(self.__dict__)
では、リークは観察されません。
更新:問題を浮き彫りにするコードが簡略化されています。