???Python Memory Management S***s???

Marc 'BlackJack' Rintsch bj_666 at gmx.net
Sun Apr 20 11:37:13 CEST 2008


On Sun, 20 Apr 2008 18:40:26 +1000, Hank @ITGroup wrote:

> In order to evaluate the memory operation, I used the codes below:
> 
> """
>  > string1 = ['abcde']*999999    # this took up an obvious memory space...
>  > del string1                              # this freed the memory 
> successfully !!

Indirectly.  ``del`` does not delete objects but just names, so you
deleted the name `string1` and then the garbage collector kicked in and
freed the list object as it was not reachable by other references anymore.

> """
> For primary variants, the *del* thing works well. However, challenge the 
> following codes, using class-instances...
> 
> """
>  > from nltk import FreqDist     # nltk stands for Natural Language Tool 
> Kit (this is not an advertisement ~_~)
>  > instance = FreqDist()
>  > instanceList = [instance]*99999
>  > del instanceList             # You can try: nothing is freed by this
> """

How do you know this?  And did you spot the difference between 999999 and
99999!?  Are you aware that both lists contain many references to a
*single* object, so the memory consumption has very little to do with the
type of object you put into the list?

In the second case you still hold a reference to that single instance
though.

Ciao,
	Marc 'BlackJack' Rintsch



More information about the Python-list mailing list