As mentioned in some StackOverflow posts (like this one), I'm dealing with a difficult situation:
My company is developing some C# applications (being a client-server application). We have migrated the server application from one computer to another one, and on the starting computer, everything was working fine but on the destination computer, memory usage of the server application goes through the roof.
First I discovered that they had Trend Micro applications on that destination computer. Some of those binaries, like tmmon.dll get into applications and create a new thread. That situation is well-known for blowing up memory usage and one of my previous employers even has the rule that, when tmmon is found inside the dump of their application, the support for that particular case is finished. For my current employer, this seems to be their first encounter with Trend Micro.
I have informed the customer about this, the people I'm talking to seem to be unaware of the whole situation but after a week I see three differences:
- No more Trend Micro threads are found in the dump of our server application.
- No more Trend Micro DLLs are found in the "Modules" list of the dump of our server application.
- The memory usage still increases (at a rate of ±100Mb/day), causing the server application needing to restart every two weeks, which is very bad.
I have discovered that, for a dump of more than 1Gb, only ±13Mb is actually reachable by .NET garbage collector, so I suspect a lot of the memory usage increased not to be caused by our .NET technology, so I would really try to get rid of this whole situation, but in fact this is the communication we currently have:
- I : "The memory increase is caused by things, outside of our hands, so there's nothing we can do. It's up to you to make sure that those external things stop wasting memory."
- Customer: "This is your application and you can't prove that that external thing is still present, so it's up to you to make sure the memory waste stops."
The situation is getting that far, that I'm using typical C++ dump analysis tools (heap_stat, PYKD.PYD) for analysing a C# dump, which is, next to the enormous work, not even giving the expected results.
Does anybody have an idea how I can get out of this mess?
Thanks in advance
