Circular references in python
Sunday, June 24th, 2007The following code create circular references in python:
>>> aRef = [] >>> aRef.append(aRef) >>> print aRef [[...]]
This creates a list object referred by a variable named “aRef”. the first element in the list object is a reference to itself. In this case, the “del aRef” dereference aRef to the list object. However, the reference count of the list object does not decrease to zero and the list object is not garbage collected, since the list object still refers to itself. In this case, the garbage collector in Python will periodically check if such circular references exist and the interpreter will collect them. The following is an example to manually collect the space used by circular referenced objects.
>>> import gc >>> gc.collect() 0 >>> del aRef >>> gc.collect() 1 >>> gc.collect() 0
Technorati Tags: programming