how to "free" an object/var ?
steve at REMOVEME.cybersource.com.au
Wed Jan 31 07:52:12 CET 2007
On Tue, 30 Jan 2007 15:48:37 -0800, James Stroud wrote:
> Stef Mientki wrote:
>> If I create a large array of data or class,
>> how do I destroy it (when not needed anymore) ?
>> Assign it to an empty list ?
>> Stef Mientki
> It will be gc'd when you leave the scope or you can call del() to
> explicitly get rid of the object if its existence bothers you.
That is not quite correct.
big_list = ["data"]*1000000
another_reference = big_list
At this point, the list of one million "data" strings still exists.
del big_list doesn't delete the list object, it removes the name
"big_list". Then, only if the list has a reference count of zero, Python
will dispose of the object and free the memory (if your OS allows that).
If there are still references to it, like "another_reference" above, it
will not be disposed of.
As far as I know there is no way to force the deletion of an object even
if it is in use. This is a Good Thing.
More information about the Python-list