2017-01-20 8 views
0

は、私はこれらのコード行があるとします。リストからオブジェクトを削除すると、Pythonがメモリを解放しますか?

class Ab: 
    def __init__(self): 
     self.x = [i for i in range(1000)] 

AbList = [Ab() for i in range(1000)] 

for i in range(500): 
    AbList.pop() 

は、私は、オブジェクトをポップした後、私の記憶を解放Pythonのでしょうか?

+1

はい。 'pop'を呼び出した後、' AbList'は 'Ab'インスタンス(と' x'メンバー)への参照を保持しません。最終的に(すなわち、ミリ秒から数秒)、ガベージコレクタはこれらのオブジェクトに関連するメモリを解放する。プロセスマネージャーまたは 'top'を使用して' pop'を実行し、 'import gc;でガベージコレクションを強制することができます。 gc.collect() 'を実行して自分自身でこれを観察します。 – wildwilhelm

答えて

0

オブジェクトを削除した後でこのメモリを解放するPythonは、コレクタとして使用されます

関連する問題