I have exhausted the physical memory once, when I was subscribing a new instance of an object in a loop (not exactly a tight one), but forgot to unhook the event handler in the finalizer (or earlier). Because the event's delegates had a strong reference to each instance (via the Target property), the objects I expected to be GCed quickly ate the whole memory. Look at your code closely for similar scenarios...
HTH, Stoyan Damov -----Original Message----- From: Moderated discussion of advanced .NET topics. [mailto:[EMAIL PROTECTED] Behalf Of Manuel Costa Sent: 07/23/2003 01:16 To: [EMAIL PROTECTED] Subject: [ADVANCED-DOTNET] GC,multithreading and multiprocessors Hi, I've been experiencing for some time problems with garbage collector in a machine with 2 hyper threaded processors. The application processes network messages for an online game implementation. Under strong loads and in the multi-processor machine, the application memory grows up to values far beyond the physical memory. Of course, this destroys its performance! On the other hand, if the same application runs on a single processor this behavior no longer exists. My first thought when i saw this behavior was that i had some synchronization problem, which was disguised in the single processor machine. However, i've been looking to the code again and again and it seams ok. Therefore, i think that a successive and intensive multi-threaded environment of memory allocations and reallocations causes the problem. Does anyone have a reasonable explanation for this behavior? Does it make sense or should i burn my eyes again and again on the developed code? Manuel =================================== This list is hosted by DevelopMentor� http://www.develop.com NEW! ASP.NET courses you may be interested in: 2 Days of ASP.NET, 29 Sept 2003, in Redmond http://www.develop.com/courses/2daspdotnet Guerrilla ASP.NET, 13 Oct 2003, in Boston http://www.develop.com/courses/gaspdotnet View archives and manage your subscription(s) at http://discuss.develop.com
