Microsoft 使用性能监视器进行 Excel 互操作内存泄漏测试

本文关键字:互操作 Excel 内存 泄漏 测试 性能 性能监视 监视器 Microsoft | 更新日期: 2023-09-27 17:56:29

我在Windows服务应用程序中使用Microsoft Excel互操作来生成Excel报告。由于我使用的是互操作程序集,因此需要确保没有内存泄漏。

我试图通过处置(关闭、退出、分配 null)所有 excel 互操作组件(如工作表、工作簿、excel 应用程序)来处理代码的内存泄漏。但我想确认处理内存泄漏情况的修复程序是否正常工作。

为此,我正在使用性能监视器工具,并将指向 Windows 服务计数器的 .Net CLR 互操作添加到性能监视器。但是,我不确定如何确认或验证定义的指标,例如 # 存根、# CCW。可以使用 Excel 互操作库确认 Windows 服务应用程序中没有内存泄漏的指标值应该是什么Microsoft。

请建议使用性能监视器确认或计算没有内存泄漏的方法。

Microsoft 使用性能监视器进行 Excel 互操作内存泄漏测试

您应该在性能监视器中观看"专用字节",如果它持续增加,则意味着您有内存泄漏。

您正在使用 C# 调用 excel,因此它应该是 RCW(运行时可调用包装器,C# 代码调用本机代码),而不是 CCW(COM 可调用包装器,本机代码调用 C# 代码)。一种内存泄漏来自此包装器。您可以使用工具DebugDiag跟踪内存泄漏,如果它显示某些泄漏来自"ole * .dll",这意味着包装器有泄漏。 RCW 和 CCW 都使用 COM 作为桥接器,COM 使用引用计数来管理对象生存期,因此如果存在内存泄漏,通常意味着某些对象的引用计数不为零。

我花了上周的时间追踪CCW的内存泄漏,祝你好运!