VBA不释放COM组件内存(内置C#)

时间:2011-02-02 15:46:07

标签: c# vba com interop

在C#中创建COM组件并在VBA中调用它。 VBA代码:

子测试()

For i = 1 To 1000
    Dim p As ClassLibrary1.Point
    Set p = New ClassLibrary1.Point
    Dim surface As ClassLibrary1.surface
    Set surface = New ClassLibrary1.surface
    Debug.Print surface.Create(p)
Next i

End Sub

ClassLibrary1包含一个DLL和一个TLB(我在我的VBA中引用)
ClassLibrary1具有Point和Surface的类和各自的接口 当我运行它时,Excel会导致内存增加(从Windows任务管理器中看到)
大约700KB(大约),每次我运行它,它会增加并保持不变。
我尝试将对象设置为'Nothing',但它没有帮助。有任何想法吗?

1 个答案:

答案 0 :(得分:1)

您可能实际上没有问题,任务管理器报告Working Set

  

程序的工作集是一个   在其中收集这些页面   已经存在的虚拟地址空间   最近引用。它包括两者   共享和私人数据。共享   数据包括包含所有内容的页面   说明你的申请   执行,包括DLL中的那些   和系统DLL。作为工作   设置大小增加,内存需求   增加。

您可能希望查看代表您正在使用的实际内存的专用字节。参见Tess Ferrandez的this article