开发者

VBA not releasing COM component memory ( built in C#)

开发者 https://www.devze.com 2023-02-08 17:16 出处:网络
created COM component in C# and called it in VBA. VBA Code: Sub test() For i = 1 To 1000 Dim p As ClassLibrary1.Point

created COM component in C# and called it in VBA. VBA Code:

Sub test()

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 consists of a DLL and a TLB (which I reference in my VBA)

ClassLibrary1 has classes and respective interfaces for Point and Surface.

When I run this, Excel causes an increase in memory (as seen from Windows Task Manager)

of 700KB (approx) and every time I run this, it increases and remains constant.

I tried setting the objects to 'Nothing' but it doesnt help. Any ideas?开发者_JAVA技巧


You probably don't actually have a problem the task manger reports the Working Set

The working set of a program is a collection of those pages in its virtual address space that have been recently referenced. It includes both shared and private data. The shared data includes pages that contain all instructions your application executes, including those in your DLLs and the system DLLs. As the working set size increases, memory demand increases.

You might want to see what the private bytes are which represent the actual memory that you are using. See this article from Tess Ferrandez

0

精彩评论

暂无评论...
验证码 换一张
取 消