Our current gc, is conservative and not very aggressive at freeing resources, you may be creating your objects way too fast...
Can't you reuse the timer? Seems to be a wiser solution reuing objects as even a good gc may spend precious processing time if it has to collect zillions of short-lived objects... Just my 2 cents, :) On Thu, 10 Mar 2005 15:07:55 -0500, Brian Kroeker <[EMAIL PROTECTED]> wrote: > > > 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: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] > Sent: Thursday, March 10, 2005 12:03 PM > To: mono-devel-list@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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 > > [EMAIL PROTECTED] > http://www.joeaudette.com > http://www.mojoportal.com > > > [EMAIL PROTECTED] > http://www.joeaudette.com > http://www.mojoportal.com -- Rafael "Monoman" Teixeira --------------------------------------- I'm trying to become a "Rosh Gadol" before my own eyes. See http://www.joelonsoftware.com/items/2004/12/06.html for enlightment. _______________________________________________ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list