Hi Ben and all,

Thanks for the pointer Ben!

Removing the two unused (read: empty) finalizers from SegmentReder.cs as
well as TerminfoReader.cs eliminated the leak -- completely.

This makes me believe that .NET 1.1 has a bug and that this was not a
Lucene.Net issue (specially when the same code, without removing those empty
finalizers works with .NET 2.0)

Over the next few days, I will run the NUnit test (I don't expect anything
to break) and will release this fix for Lucene.Net 1.9, 1.9.1 and 2.0

Regards,

-- George Aroush

-----Original Message-----
From: Ben Tregenna [mailto:[EMAIL PROTECTED] 
Sent: Monday, September 25, 2006 12:01 PM
To: [email protected]
Subject: Re: Memory leak (was: RE: Lucene.Net Indexing Large Databases)

George Aroush wrote:

>Hi Michael,
>
>That is right.  If you take the current code as-is (without the change 
>to
>Close() as I mentioned earlier) of Lucene.Net 1.9, 1.9.1 and 2.0 and 
>compile them using .NET 2.0, you will not see any leak!
>
>What's even more puzzling to me is this.  If I add the following code: 
>
>       ~RAMOutputStream()
>       {
>               file = null;
>       }
> 
>To the class Lucene.Net.Store.RAMOutputStream, the leak more then doubles!!
>  
>

Seems similar to my observation that removing the (unused) finaliser for
TermInfosReader halved the memory leak.

I have to say the logic of the finaliser in C# isn't one of my strong suits
but I'm still poking around in the code occassionally as and when I get the
time...

Ben

Reply via email to