Re: Re: How to free memory?
- To: mathgroup at smc.vnet.net
- Subject: [mg59864] Re: [mg59793] Re: How to free memory?
- From: Igor Antonio <igora at wolf-ram.com>
- Date: Wed, 24 Aug 2005 06:30:54 -0400 (EDT)
- Organization: Wolfram Research, Inc.
- References: <de46jr$r62$1@smc.vnet.net> <de6m36$chm$1@smc.vnet.net> <200508210751.DAA26589@smc.vnet.net>
- Reply-to: igora at wolf-ram.com
- Sender: owner-wri-mathgroup at wolfram.com
David Bailey wrote:
> OK, Permit me to extract my foot from my mouth!
>
> Of course, Out holds the various outputs even if they were terminated by
> a semicolon - so the 'memory leak' is totally explained. A loop such as
>
> k = 0; While[True, k++; s = Table[i, {i, 1, 10^7}]; Print["Iteration
> ", k] ]
>
> leaks no memory.
>
> David Bailey http://www.dbaileyconsultancy.co.uk
I was about to hit the send button with a reply to your previous post,
then I saw this post. :-)
Anyway, I figured I can still share the answer, which contains a simple
test that might be nice for other users to see.
Cheers,
Igor
----------------------------------------------------------------------
Sure there is significant data stored in the Out[]'s. The semicolon
only suppresses the output. The expression is still created.
Assuming $HistoryLength = default value:
In[10]:=
Quit[]
In[1]:=
MemoryInUse[]
Out[1]=
4071848
In[2]:=
s = Table[i, {i, 1, 10^7}];
In[3]:=
MemoryInUse[]
Out[3]=
44049288
In[4]:=
s = Table[i, {i, 1, 10^7}];
In[5]:=
MemoryInUse[]
Out[5]=
84051304
In[7]:=
ByteCount[Out[2]]
Out[7]=
40000056
In[8]:=
ByteCount[Out[4]]
Out[8]=
40000056
---------------------------------------------------------------
Now, let's set $HistoryLength = 3 (just high enough to keep on value of
"s"). Now, Out[5]and Out[7] are roughly the same since the value of
Out[3] is gone.
In[7]:=
Quit[]
In[1]:=
$HistoryLength = 3
Out[1]=
3
In[2]:=
MemoryInUse[]
Out[2]=
4046456
In[3]:=
s = Table[i, {i, 1, 10^7}];
In[4]:=
MemoryInUse[]
Out[4]=
44049544
In[5]:=
s = Table[i, {i, 1, 10^7}];
In[6]:=
MemoryInUse[]
Out[6]=
84050040
In[7]:=
s = Table[i, {i, 1, 10^7}];
In[8]:=
MemoryInUse[]
Out[8]=
84050232
--
Igor C. Antonio
Wolfram Research, Inc.
http://www.wolfram.com
To email me personally, remove the dash.
- References:
- Re: How to free memory?
- From: David Bailey <dave@Remove_Thisdbailey.co.uk>
- Re: How to free memory?