使用性能监视器的Microsoft Excel互操作内存泄漏testing
我在Windows服务应用程序中使用Microsoft Excel互操作来生成Excel报告。 由于我正在使用互操作程序集,需要确保没有内存泄漏。
我试图通过处理(closures,退出,分配null)所有的Excel工作表,工作簿,Excel应用程序的互操作性组件来处理内存泄漏。 但我想确认处理内存泄漏情况的修复程序是否正常工作。
为此,我使用性能监视器工具,并添加了.net CLR互操作指向windows服务计数器的性能监视器。 但是,我不确定如何确认或validation定义的指标,例如#个存根,CCW的数量。 什么应该是可以确认使用Microsoft Excel互操作库的Windows服务应用程序中没有内存泄漏的度量值。
请build议使用性能监视器确认或计算没有内存泄漏的方法。
你应该在性能监视器上观看“ 私人字节 ”,如果它不断增加,那就意味着你有内存泄漏。
你使用C#来调用excel,所以它应该是RCW(运行时可调用的包装器,C#代码调用本地代码),而不是CCW(COM可调用的包装器,本地代码调用C#代码)。 一种内存泄漏来自这个包装。 如果显示一些泄漏来自“ole * .dll”,您可以使用DebugDiag工具来跟踪内存泄漏,这意味着您有包装泄漏。 RCW和CCW都使用COM作为桥梁,COM使用引用计数来pipe理对象的生命周期,所以如果存在内存泄漏,通常意味着某个对象的引用计数不为零。
我花了我最后一周的时间寻找CCW的内存泄露,祝你好运!