I work with a transaction-based system on a Windows CE device as part of the Compact.NET Framework v3.5. We found that with more transactions, less and less memory is available. Obviously some kind of memory leak.
After each transaction, we take two memory values; one of the OS (PInvoke call) and one of the garbage collector. We found that reading the OS increases memory usage, while reading from the GC remains relatively stable (about 1 MB of variance + -).
The application uses Microsoft synchronization services to store information about several local databases (SQL Server Compact v3.5) and synchronize them with a remote server.
If it was Windows XP, I would just connect to the executable using WinDbg and analyze the heap to see if I am creating objects that will never get GC'd. However, I don’t even know if the problem is with a managed heap.
So this question has two parts:
1) What are the likely culprits of a memory leak in this way in a managed application (DataAdapters, Streams, etc.)?
2) What debugging tools or methods will help me determine the exact problem?
I know that this is not so much, but at this stage I do not have much information.
Thank!
source
share