MathGroup Archive 2005

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: [long] Mathematica 5.1 and memory: any garbage collection?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg59740] Re: [mg59697] [long] Mathematica 5.1 and memory: any garbage collection?
  • From: stephen layland <layland at wolfram.com>
  • Date: Fri, 19 Aug 2005 04:32:12 -0400 (EDT)
  • References: <200508180416.AAA08516@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

and thus spake some.poster at use.net [2005.08.18 @ 00:40]:
> Hi,

Hi Some,

> My problem lies with the fact that memory used at intermediate stage seems
> never be freed, even whith explicit Clear, Remove or any assignment to {} or
> . in whatever order.
Remember that Mathematica keeps a history!  That way %% and Out[blah]
always return the appropriate expr.  You can tell it not to use a
history by setting $HistoryLength = 0.

> In[6]:=
> (* simple mapped function *)
> res=Map[2*#&,try];
> {MemoryInUse[],MaxMemoryUsed[]}
>
> Out[7]=
> {93949328,103186832}                    (* Ouch ! So much for a _simple_ test *)

Your res is still hiding out in Out[6] here.  Compare this to
something like

    In[x]:= res2=2 #/@try; MemoryInUse[]
            Clear[res2]; MemoryInUse[]

> In[8]:=
> (* forgetting a large expression doesn't free _any_ memory *)
> try={};
> {MemoryInUse[],MaxMemoryUsed[]}

Cause you're not freeing all the computed results...

The best way to accomplish what you're doing is set $HistoryLength = 0
as I mentioned earlier, use Utilities`CleanSlate` (in the docs) or do
something like hack:

    Unprotect[Out];
    Clear@Out;

> (* ahem, what _is_ Clear supposed to do? *)
> (* ahem, what _is_ Remove supposed to do? *)
The Help browser will tell you.  :)

> In[24]:=
> (* sharing common subexpressions somehow works, slow as hell *)
> 
> (* please note: even after removing all values and symbols in all
>    possible ways, try and res are _still_ somewhere in memory since
>    Share _really_ does something! *)
See Above.


> (* Share should share nothing as we don't have any object stored, safe
> perhaps symbols a..f *)
Wrong assumption.  

Happy hacking!

--
/*------------------------------*\
|        stephen layland         |
|    Documentation Programmer    |
| http://members.wri.com/layland |
\*------------------------------*/


  • Prev by Date: Re: FindRoot for the determinant of a matrix with a varying size
  • Next by Date: Re: Simplification to Partial Fraction
  • Previous by thread: [long] Mathematica 5.1 and memory: any garbage collection?
  • Next by thread: Re: [long] Mathematica 5.1 and memory: any garbage collection?