.net - 应用程序中的奇怪性能下降

标签 .net performance

我们有一个混合了 .NET 2.0 和 native C++ 的应用程序。在我们的测试中,我们有一个模式可以自动循环一组项目。一个项目打开、运行、关闭、重复。这些步骤中的每一步都需要创建/销毁窗口(准确地说是 winforms)。最近我们在性能上遇到了一些奇怪的行为。运行几个小时后,打开和关闭部分会变慢(阻塞 gui 线程并显示半绘制的屏幕等)。现在很容易将其归结为资源泄漏……但我们正在跟踪句柄和内存,虽然内存略有增长,但没有任何迹象表明存在这种级别的问题。 Handlebars 稳定。所以也许悬空事件处理程序......仍然需要调查。但让我感到困惑的是,关闭应用程序并重新启动它并不能恢复初始性能。它仍然很慢,直到我重新启动操作系统(win XP),然后性能再次开始快速启动。这真的让我感到困惑,因为我认为关闭应用程序将回收所有资源。有什么想法吗?

最佳答案

听起来可能是 GDI 句柄泄漏。 GDI objects垃圾收集器不会自动回收。

.NET Memory Profiler ( http://memprofiler.com/ ) 在跟踪这些方面做得很好(有一个 14 天的试用版)。

你见过这些:

  • Resource Leaks: Detecting, Locating, and Repairing Your Leaky GDI Code
  • Detect and Plug GDI Leaks in Your Code with Two Powerful Tools for Windows XP (有一个 GDI 句柄查看器工具的链接)。
  • 关于.net - 应用程序中的奇怪性能下降,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1637903/

    相关文章:

    C# 正则表达式替换意外行为

    c# - 使用 C# 以编程方式切换耳机中的立体声音频 channel (左 <> 右)

    c# - 插入多条记录时 Entity Framework 外键问题?

    c# - 当被要求修复程序中的错误时,您会发现 100 多个实例

    SQL:链接连接效率

    c# - 在简单注入(inject)器中延迟创建实例

    bash - grep -vf 大文件太慢

    PHP OPcache 优化级别 - 它们是什么?

    java - 性能 iText 与 PdfBox

    c - 使用 SSE 从 _m128i 寄存器中提取非零值