MathGroup Archive 2011

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

Search the Archive

Re: Memory leak or flawed garbage collector

  • To: mathgroup at smc.vnet.net
  • Subject: [mg120679] Re: Memory leak or flawed garbage collector
  • From: Daniel Lichtblau <danl at wolfram.com>
  • Date: Wed, 3 Aug 2011 07:08:09 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <j0u7mo$fc1$1@smc.vnet.net> <j10l01$os6$1@smc.vnet.net> <j15738$b4a$1@smc.vnet.net> <201108021111.HAA29331@smc.vnet.net>

On 08/02/2011 06:11 AM, Alexey Popkov wrote:
> "Oleksandr Rasputinov"<oleksandr_rasputinov at hmamail.com>  wrote:
> news:j15738$b4a$1 at smc.vnet.net...
>>    From this we may surmise that values are not being cleared for symbols
>> appearing in a Module that have gone out of scope if the delayed flag is
>> set and if they have also been conditionally evaluated. It appears that
>> these values are what is preventing garbage collection; therefore I would
>> consider this as a bug in Module (in that it does not recognise when
>> values have gone out of scope in all cases) rather than in the garbage
>> collector itself.
>
> Consider the following simple experiment without Module:
>
> In[1]:= $HistoryLength=0;
> a[b_]:=(SetAttributes[d,Temporary];d:=9;d/;b===1);
>
> In[3]:= a[1]
> Out[3]= 9
>
> In[4]:= Definition[d]
> Out[4]= Attributes[d]={Temporary}
>
> d:=9
>
> As you see, the same bug appears without Module. So I think this is a bug in
> the garbage collector itself. As for Module, I feel that this function is
> essentially top-level, as opposed to Block. Probably it is possible to write
> full analog of Module in top-level Mathematica code.
> [...]

It does not require a condition test to elicit this behavior.

In[3]:= $HistoryLength = 0;
a[] := (SetAttributes[d, Temporary]; d := 9; d);

In[5]:= a[]

Out[5]= 9

In[6]:= ?? d

Global`d

Attributes[d]={Temporary}

d:=9

This is probably not incorrect behavior. Setting a Temporary attribute 
is not documented to have any effect, so far as I can tell. Module will 
set the attribute on its parameters, but that's a different matter.


Daniel Lichtblau
Wolfram Research




  • Prev by Date: Using colored text in PlotLabel
  • Next by Date: Re: LabelPlot: Changing size of CurveLabel
  • Previous by thread: Re: Memory leak or flawed garbage collector
  • Next by thread: Re: Memory leak or flawed garbage collector