[Mono-devel-list] Leak in System.Timers.Timer?
Brian Kroeker
bkroeker at nortel.com
Thu Mar 10 15:07:55 EST 2005
I haven't installed mono on windows but using the MS Framework I don't see
this behavior on windows. Also I don't believe this could be a
lapsed-listener, since I'm subscribing to an event in the instance of timer
- when all references to timer are gone shouldn't the garbage collector get
rid of the object including its event and list of delegates? I didn't think
the delegates stuck around after the event went away.
Brian
-----Original Message-----
From: mono-devel-list-admin at lists.ximian.com
[mailto:mono-devel-list-admin at lists.ximian.com]
Sent: Thursday, March 10, 2005 12:03 PM
To: mono-devel-list at lists.ximian.com
Subject: Re: [Mono-devel-list] Leak in System.Timers.Timer?
Oh, wait I see you are passing the same one by ref and setting it to null.
Do you get different behaviour under windows?
Joe Audette <joe_audette at yahoo.com> wrote:
Looks to me like your creating timers in an infinite loop wich would of
course continue to consume resources
while(true)
{
InitTimeout(ref timeout);
System.Threading.Thread.Sleep(10);
}
true will always be true so you are spinning off a lot of timers right? Or
am I missing something?
Regards,
Joe
Brian Kroeker <bkroeker at nortel.com> wrote:
I'm seeing what looks like a memory leak somewhere in System.Timers.Timer.
I'm using mono 1.1.4 on a linux system. The code I used to reproduce the
problem is:
----------------------
using System;
namespace TimerTest
{
public class TimerTest
{
static void Main(string[] args)
{
TimerTest test = new TimerTest();
test.Run();
}
public TimerTest()
{
}
public void Run()
{
System.Timers.Timer timeout = null;
while(true)
{
InitTimeout(ref timeout);
System.Threading.Thread.Sleep(10);
}
}
private void InitTimeout(ref System.Timers.Timer timer)
{
if(timer != null)
{
timer.Stop();
timer = null;
}
timer = new System.Timers.Timer();
timer.AutoReset = false;
timer.Elapsed += new
System.Timers.ElapsedEventHandler(OnTimeout);
timer.Interval = 30000;
timer.Start();
}
private void OnTimeout(object source, System.Timers.ElapsedEventArgs
e)
{
}
}
}
--------------
Does anyone else see this problem? Am I missing something here? I see the
memory usage on my system increase fairly quickly.
Thanks,
Brian
joe_audette at yahoo.com
http://www.joeaudette.com
http://www.mojoportal.com
joe_audette at yahoo.com
http://www.joeaudette.com
http://www.mojoportal.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/mono-devel-list/attachments/20050310/fad1cf97/attachment.html
More information about the Mono-devel-list
mailing list