[Mono-bugs] [Bug 81627][Nor] Changed - FileSystemWatcher RaiseEvent Causes Huge Heap

bugzilla-daemon at bugzilla.ximian.com bugzilla-daemon at bugzilla.ximian.com
Wed Jul 18 06:13:54 EDT 2007


Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.

Changed by juraj at hotfeet.ch.

http://bugzilla.ximian.com/show_bug.cgi?id=81627

--- shadow/81627	2007-07-13 12:18:54.000000000 -0400
+++ shadow/81627.tmp.16639	2007-07-18 06:13:54.000000000 -0400
@@ -80,6 +80,107 @@
 
 
 ------- Additional Comments From gabriel.burt at gmail.com  2007-07-13 12:18 -------
 Thanks for your work on this, Juraj.  I haven't been able to test it
 yet (hopefully within a few days I will).  Have you?  Fixing this will
 be great - a big step toward getting this usable for Banshee, F-Spot, etc.
+
+------- Additional Comments From juraj at hotfeet.ch  2007-07-18 06:13 -------
+I did some testing. Running the attached test program as follows shows
+that my optimisation reduces the amount of allocated memory by almost
+one third.
+
+mono --profile=default:alloc FSWTest.exe . 10000
+
+Result without optimisation:
+============================
+
+Allocation profiler
+Total mem Method
+########################
+    7778 KB
+System.MulticastDelegate::begin_invoke_IAsyncResult_object_FileSystemEventArgs_AsyncCallback_object(object,FileSystemEventArgs,AsyncCallback,object)
+        1757 KB    30000
+System.Runtime.Remoting.Messaging.MonoMethodMessage
+        1640 KB    30000 System.Runtime.Remoting.Messaging.AsyncResult   
+        1230 KB    60001 System.String                                   
+        1171 KB    30000 System.MonoAsyncCall                            
+         744 KB    30073 System.Object[]                                 
+         703 KB    30000 System.String[]                                 
+         527 KB    30000 System.Byte[]                                   
+  Callers (with count) that contribute at least for 1%:
+       30000  100 %
+System.IO.FileSystemWatcher::RaiseEvent(Delegate,EventArgs,FileSystemWatcher/EventType)
+########################
+    3750 KB System.Delegate::Clone()
+        2812 KB    60000 System.IO.FileSystemEventHandler                
+         937 KB    20000 System.IO.RenamedEventHandler                   
+  Callers (with count) that contribute at least for 1%:
+       80000  100 % System.MulticastDelegate::GetInvocationList()
+########################
+    2594 KB
+System.MulticastDelegate::begin_invoke_IAsyncResult_object_RenamedEventArgs_AsyncCallback_object(object,RenamedEventArgs,AsyncCallback,object)
+         585 KB    10000
+System.Runtime.Remoting.Messaging.MonoMethodMessage
+         546 KB    10000 System.Runtime.Remoting.Messaging.AsyncResult   
+         410 KB    20001 System.String                                   
+         390 KB    10000 System.MonoAsyncCall                            
+         249 KB    10022 System.Object[]                                 
+         234 KB    10000 System.String[]                                 
+         175 KB    10000 System.Byte[]                                   
+  Callers (with count) that contribute at least for 1%:
+       10000  100 %
+System.IO.FileSystemWatcher::RaiseEvent(Delegate,EventArgs,FileSystemWatcher/EventType)
+########################
+     781 KB System.MulticastDelegate::GetInvocationList()
+         781 KB    40000 System.Delegate[]                               
+  Callers (with count) that contribute at least for 1%:
+       40000  100 %
+System.IO.FileSystemWatcher::RaiseEvent(Delegate,EventArgs,FileSystemWatcher/EventType)
+########################
+     625 KB System.Threading.ExecutionContext::Capture()
+         625 KB    40000 System.Threading.ExecutionContext               
+  Callers (with count) that contribute at least for 1%:
+       40000  100 %
+System.Threading.ExecutionContext::runtime_invoke_ExecutionContext(object,intptr,intptr,intptr)
+Total memory allocated: 15531 KB
+
+Result with optimisation:
+=========================
+Allocation profiler
+Total mem Method
+########################
+    7753 KB
+System.MulticastDelegate::begin_invoke_IAsyncResult_object_FileSystemEventArgs_AsyncCallback_object(object,FileSystemEventArgs,AsyncCallback,object)
+        1757 KB    30000
+System.Runtime.Remoting.Messaging.MonoMethodMessage
+        1640 KB    30000 System.Runtime.Remoting.Messaging.AsyncResult   
+        1230 KB    60001 System.String                                   
+        1171 KB    30000 System.MonoAsyncCall                            
+         720 KB    30050 System.Object[]                                 
+         703 KB    30000 System.String[]                                 
+         527 KB    30000 System.Byte[]                                   
+  Callers (with count) that contribute at least for 1%:
+       30000  100 %
+System.IO.FileSystemWatcher::RaiseEvent(Delegate,EventArgs,FileSystemWatcher/EventType)
+########################
+    2584 KB
+System.MulticastDelegate::begin_invoke_IAsyncResult_object_RenamedEventArgs_AsyncCallback_object(object,RenamedEventArgs,AsyncCallback,object)
+         585 KB    10000
+System.Runtime.Remoting.Messaging.MonoMethodMessage
+         546 KB    10000 System.Runtime.Remoting.Messaging.AsyncResult   
+         410 KB    20001 System.String                                   
+         390 KB    10000 System.MonoAsyncCall                            
+         240 KB    10022 System.Object[]                                 
+         234 KB    10000 System.String[]                                 
+         175 KB    10000 System.Byte[]                                   
+  Callers (with count) that contribute at least for 1%:
+       10000  100 %
+System.IO.FileSystemWatcher::RaiseEvent(Delegate,EventArgs,FileSystemWatcher/EventType)
+########################
+     625 KB System.Threading.ExecutionContext::Capture()
+         625 KB    40000 System.Threading.ExecutionContext               
+  Callers (with count) that contribute at least for 1%:
+       40000  100 %
+System.Threading.ExecutionContext::runtime_invoke_ExecutionContext(object,intptr,intptr,intptr)
+Total memory allocated: 10966 KB
+


More information about the mono-bugs mailing list