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

Reply via email to