[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