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
精彩评论