我们有一个混合了.NET 2.0和本机C ++的应用程序。在我们的测试中,我们有一个模式可以自动循环一组项目。项目打开,运行,关闭,重复。这些步骤中的每一步都需要创建/销毁窗口(确切地说是winforms)。最近我们在表演中遇到了一些奇怪的行为。运行几个小时后,打开和关闭部件减速(阻止gui线程并显示半画屏幕等)。现在很容易将这个问题搞砸到资源泄漏...但是我们正在跟踪句柄和内存,虽然内存略有增长但没有任何迹象表明这个问题。手柄稳定。所以也许悬空的事件处理程序......仍然需要调查。但令我感到困惑的是,关闭应用程序并重新启动它并不能恢复最初的性能。在重新启动操作系统(赢得XP)之前,它仍然很慢,然后性能再次开始变得快速。这让我很困惑,因为我认为关闭应用程序将收回所有资源。有什么想法吗?
答案 0 :(得分:1)
听起来像是一个可能的GDI句柄泄漏。垃圾收集器不会自动获取GDI objects。
.NET Memory Profiler(http://memprofiler.com/)可以很好地跟踪这些内容(有14天的试用版)。
你见过这些:
答案 1 :(得分:0)
你假设它有资源泄漏(这不是一个糟糕的猜测),但它可能是其他东西。
您是否尝试过使用性能分析器?
答案 2 :(得分:0)
我们正在泄漏窗口类