【发布时间】:2011-05-11 03:02:24
【问题描述】:
我正在使用 Compact .NET Framework v3.5 下的 Windows CE 设备上的基于事务的系统。我们发现,随着越来越多的事务被执行,可用的内存越来越少。显然是某种内存泄漏。
每次交易后,我们会读取两次内存读数;一个来自操作系统(一个 PInvoke 调用),一个来自垃圾收集器。我们发现操作系统读取正在增加内存使用量,而来自 GC 的读取保持相对稳定(大约 1MB 差异 +-)。
该应用程序利用 Microsoft 同步服务将信息存储在几个本地数据库 (SQL Server Compact v3.5) 上,并将它们与远程服务器同步。
如果这是 Windows XP,我只需使用 WinDbg 连接到可执行文件,然后分析堆以查看我是否正在创建永远不会被 GC 处理的对象。但是,我什至不知道托管堆是否是问题所在。
所以这个问题分为两部分:
1) 在托管应用程序(DataAdapters、Streams 等)中以这种方式泄漏内存的可能罪魁祸首是什么?
2) 哪些调试工具/技术可以帮助我找到确切的问题?
我知道这没什么好做的,但在这个阶段,我没有比这更多的信息了。
谢谢!
【问题讨论】:
标签: .net debugging memory-leaks compact-framework