MathGroup Archive 1998

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

Search the Archive

Re: Memory Management

> Has any body an idea about Memory Management in Mathematica??
> For example what happend with the memory allocated by an expression when
> I clear this expression? Clear[exp] This is what I do:
> exp=Read[stmp, nomfich];
> MemoryInUse[] ---> 867664
> Clear[exp]
> MemoryInUse[] ---> 868584

If the memory associated with the value of exp isn't recovered, this
means that the value must still be in use.  In your example it is
likely that the value of exp is being used in a value of Out.  If so,
you can recover that memory by clearing Out or by unsetting the
appropriate value of Out, as in:

In[2]:= exp=Read["data"];
In[3]:= MemoryInUse[]
Out[3]= 922208
In[4]:= Clear[exp]
In[5]:= MemoryInUse[]
Out[5]= 923008
In[6]:= Unprotect[Out]; Out[2]=.; Protect[Out] ; In[7]:= MemoryInUse[]
Out[7]= 723876

If there are still other references to the value of exp, they would need
to be cleared as well.

If you want to locate all of the references to an expression, and aren't
able to do so by some other means, it is always possible to track down
references using methods such as

    In[1]:= exp=Read["data"];

    In[2]:= FindReferences[p_]:=
            Scan[Function[{e},If[!MemberQ[Attributes[e], ReadProtected],
                    If[!FreeQ[ToExpression[e,InputForm,#]& /@
                        {OwnValues, DownValues, SubValues, UpValues},p],
                    Print["reference found from symbol ", e]] ]],

    In[3]:= FindReferences[exp]
    reference found from symbol exp
    reference found from symbol Out

which reports all of the symbols that include references to the
expression. This sort of thing is rarely necessary, though.  In most
cases it is not difficult to find references just by looking at a
program, or to set up a program so that unwanted references aren't
introduced in the first place.

Dave Withoff
Wolfram Research

  • Prev by Date: MathGroup/Newsgroup Search Engine
  • Next by Date: recursive relation problem ?
  • Previous by thread: Memory Management
  • Next by thread: Re: Memory Management