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
- References:
- Re: Memory leak or flawed garbage collector
- From: "Alexey Popkov" <lehin.p@gmail.com>
- Re: Memory leak or flawed garbage collector