2017-01-20 2 views
0

Angenommen ich diese Zeilen Code haben:Wird Python Speicher freigeben, wenn ich ein Objekt aus einer Liste lösche?

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() 

Wird mein Gedächtnis, nachdem ich die Objekte tauchte python kostenlos registrieren?

+1

Ja. Nachdem Sie 'pop' aufgerufen haben, wird' AbList' keinen Verweis auf die 'Ab'-Instanzen (und ihre' x'-Mitglieder) beibehalten. Schließlich (d. H. Millisekunden bis einige Sekunden) wird der Speicherbereiniger den mit diesen Objekten verbundenen Speicher freigeben. Sie können einen Prozessmanager oder 'top' verwenden, den' pop' ausführen und dann die Garbage Collection mit 'import gc; gc.collect() 'um dies selbst zu beobachten. – wildwilhelm

Antwort

0

Python als Grabkollektor, der diesen Speicher freigibt, nachdem Sie die Objekte löschen

Verwandte Themen