Visual Basic COM内存使用情况

时间:2015-11-17 16:36:31

标签: arrays memory-management com vb6

我的问题与旧技术有关。然而,要获得彻底的答案对我来说很重要。 Visual Basic专家可以回复我或包含其他网站的链接,并阐明这个内存使用问题吗?我相信我在之前的帖子中没有清楚地草拟我的问题。

在电子商务网站页面上的自定义COM加上对象中考虑以下VB 6代码:

Dim globalArray(30, 100000) 

'Assign long and short strings to the globalArray elements.
'Also some of the elements of globalArray hold smaller arrays. And also load the xml:

Set objGlobalDom = CreateObject("msxml2.FreeThreadedDomDocument.6.0") 
objGlobalDom.loadXML (xmlStr)
Application.lock
Set Application("objGlobalDom") = objGlobalDom
Application("globalArray")  = globalArray
Application.unlock

对于任何新会话,都会完成以下变量分配:

set Session("objGlobalDom") =  Application("objGlobalDom")
session("globalArray") = Application("objGlobalDom")

假设Application("objGlobalDom")将包含一个包含大约1000个节点的xml,每个节点占用大约3k的内存。假设数组将占用大约50兆的内存。

考虑VB6和COM对象:

  1. 我知道对象的每个实例都引用了对象的数据 我不明白的是:
    如果session("objGlobalDom")不包含application("objGlobalDom")的副本,为什么session("objGlobalDom")数据的更改不会自动反映在application("objGlobalDom")的数据中? session("objGlobalDom")Apllication("globalDom")的引用仅用于阅读Application("objGlobalDom")的数据吗?

  2. 根据Microsoft的说法,在我globalArray示例的情况下,session("globalArray")始终会获得Application("globalArray")的副本,因此Microsoft不鼓励将数组分配给会话变量。但是我不清楚在COM对象和对象引用的情况下,set Session("objGlobalDom") = Application("objGlobalDom")的赋值是否将数组复制到会话变量?

0 个答案:

没有答案