Re: Memory operations
- To: mathgroup at smc.vnet.net
- Subject: [mg64929] Re: Memory operations
- From: Maxim <m.r at inbox.ru>
- Date: Wed, 8 Mar 2006 00:59:40 -0500 (EST)
- References: <dujr2t$8pr$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
On Tue, 7 Mar 2006 11:33:49 +0000 (UTC), <sir_puding at tut.by> wrote: > Hi. > > Can anyone tell me how to free memory in Mathematica. > > I have some list operations in cycle (really long cycle). > Smth. like > > ----------------------- > ar={}; > For[i=0,++i<10000000000, > ar=Append[ar,{bla bla bla}]; > ] > ----------------------- > How can i free memory allocated for ar when cycle is completed --- i > have terrible memory leakage (several megs in minute), cause when I use > Clear or Remove ar does > not point to any address, but the result of previous calculations is > still in memory. I could not find any operation like free() in C. > > > Tnx. > This is due to a strange glitch that appears when For returns the value to the top level: In[1]:= out1 = For[i = 1, i <= 5, i++, 0] In[2]:= {out1, %} Out[2]= {Null, Null} In[3]:= out2 = For[i = 1, i <= 5, i++;, 0] In[4]:= {out2, %} Out[4]= {Null, 5} The result of i++ is stored in DownValues[Out]. So in your case even after Clear[ar] the memory taken by the structure is not deallocated because there is still a reference to it from DownValues[Out]. Either set $HistoryLength = 0 or rewrite your For loop in a different way. Maxim Rytin m.r at inbox.ru