内存不足,无法继续执行程序

Posted

技术标签:

【中文标题】内存不足,无法继续执行程序【英文标题】:Insufficient memory to continue the execution of the program 【发布时间】:2009-08-14 10:41:49 【问题描述】:

我的应用程序(Vb.net,Access 2003/2007)是扫描 Access 数据库文件中的 activex 控件并生成相应的报告。

问题:

收到如下错误:

“。”

在扫描 Office 2000 之前的旧版本 Access 文件时出现上述错误。

我得到这个的代码行如下:

Dim oForm As Access.Form
Dim oAccess as Access.Application

oForm = oAccess.Forms(objForms.Name)

但它也会打开文件和表单。

需要帮助:

是否可以读取文件(访问表单和报告)?

请提供参考或任何解决方案。

【问题讨论】:

出现该错误时已经打开了多少个表单?完成处理后,是否关闭表单? 【参考方案1】:

您似乎在做 Access 的 COM 自动化以打开表单,然后循环通过它们的控件来查找某些属性。

另一种解决方案也将涉及自动化 Access,但它不需要实际打开表单,这就是未记录的 Application.SaveAsText 命令。你会做这样的事情:

  Application.Saveastext acForm, "dlgWebBrowser", _
    "C:\Output\dlgWebBrowser.txt"

然后您必须弄清楚该文件中如何描述 ActiveX 控件。如果该文件看起来像 VB 表单的代码,那是因为它就是这样。

上面的例子有一个 IE web 浏览器控件,在转储 OLE 数据后,它里面有这个:

  OLEClass ="Microsoft Web Browser"
  Class ="Shell.Explorer.2"
  GUID = Begin
    0x54c1ea41936d2046b9dc5b29905976e3
  End

我希望所有 ActiveX 控件都有一个 OLEClass,但我原则上避免使用 ActiveX 控件,因为如果在您尝试运行应用程序时未正确安装它们可能会导致问题。

事实上,这可能是问题的根源——如果您在没有注册相关 ActiveX 控件的机器上打开 Access 表单,它将失败,并且表单将无法打开。

我敢打赌,Application.SaveAsText 将完全回避这个问题,因为不必打开表单。

【讨论】:

【参考方案2】:

我以前见过与此非常相似的行为。如果您尝试在 RAM 超过(我认为)1Gb 的计算机上打开 Access 97 文件,有时会报告“内存不足”错误。错误并不总是立即显现 - 有时项目看起来运行正常,但在您尝试打开特别大的对象时会崩溃。

在我们确实遇到这种情况的情况下,用户在新的 XP 计算机上运行旧的 Access 97 数据库,他们已升级到具有现代 RAM 量的计算机。该公司的技术支持尝试了他们能想到的一切——包括完整的办公室重新安装、应用所有补丁等,但最终不得不求助于从计算机中删除 RAM——于是错误消失了,一切都恢复了坚如磐石。我不确定确切的原因,但它将与 Access 97 文件格式的内存管理有关(我相信该错误在 MSDN 上的某个地方,但我没有直接参与技术支持寻找解决方案 - 我会多年前刚写的申请)

我建议您唯一的出路是使用特殊的低内存 PC 来运行应用程序。

【讨论】:

实际上,Office 97 的 1 Gb RAM 问题可以通过 Jet 3.51 启动 Microsoft Access (97) support.microsoft.com/?kbid=161255 时出现“内存不足”错误来解决。无论如何,这是一个好主意,因为 Jet 更稳定。

以上是关于内存不足,无法继续执行程序的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft Visual Studio 没有足够的内存空间继续执行程序

AWS:Java 运行时环境内存不足,无法继续

在SQL中运行程序显示内存不足

JAVA运行时显示 程序内存不足,该如何调整

云帮手在windows下提示虚拟内存不足,如何解决?

电脑的时会弹出“系统资源不足,无法执行操作”的窗口 啥操作都不能执行,谁能告诉我啊