【发布时间】:2014-08-25 23:18:58
【问题描述】:
我创建了一个类对象,其中包含对其他类的引用(其他类都没有相互引用)。我有一个内存问题,当我循环并创建类的实例时会出现“内存不足”错误。类和子例程的简化代码 sn-p 如下:
类 aclsWell
Option Explicit
Option Compare Text
Option Base 1
Private zclsSettings As bclsSettings
Private zclsInfo As bclsInfo
Private zclsProduction As bclsProduction
Private Sub Class_Initialize()
Set zclsSettings = New bclsSettings: Set zclsSettings.Parent = Me
Set zclsInfo = New bclsInfo: Set zclsInfo.Parent = Me
Set zclsProduction = New bclsProduction: Set zclsProduction.Parent = Me
End Sub
Private Sub Class_Terminate()
Set zclsSettings.Parent = Nothing: Set zclsSettings = Nothing
Set zclsInfo.Parent = Nothing: Set zclsInfo = Nothing
Set zclsProduction.Parent = Nothing: Set zclsProduction = Nothing
End Sub
模块:
Sub Test1()
Dim zwell As aclsWell
For i = 1 To 2000
Set zwell = New aclsWell
Set zWell = Nothing
Next i
End sub
Test1 完成后,excel 正在使用大约 1 GB 的数据,如果我再次运行,我会收到错误消息。但是,如果我在 VBA 窗口中点击停止按钮,内存就会被清除。有什么方法可以模拟使用 VBA 按下停止按钮(例如 Application.stopmacro 或类似的东西)。还是我在关闭对象的方式上存在根本问题?非常感谢您的任何见解。
【问题讨论】:
-
Class_Terminate中的aclsWell是否在您预期的时候遇到断点?