MSXML Out Memory -Delphi

时间:2015-03-11 18:22:54

标签: xml delphi msxml

当我们尝试将XML转换为大约160MB时,MSXML因内存不足而失败。

有趣的是,它只对某个服务器失败,我可以在我的计算机上成功转换同一个文件。

以下是我尝试过的事情:

  • 增加虚拟内存 - 没有效果
  • 已经尝试卸货了 dll有一段时间的帮助,但一旦文件大小再次变大就会发生 仅在该服务器上

我试图通过设置PE标志让我的应用程序知道大地址,但觉得这可能不适用于delphi 5。

注意:我知道MSXML使用DOM模型并将所有内容拉入内存,但我们无法从此模型中移除并修复此问题。

任何建议将不胜感激。 德尔菲5 MSMXML 6

1 个答案:

答案 0 :(得分:1)

大地址识别可能是您唯一的希望。你无法使用内置的Borland内存管理器来做到这一点。因此,使用FastMM甚至基于平台HeapAlloc的替代品都可以帮助您克服这个障碍。大地址识别和RTL / VCL可能存在其他问题,但我有信心。我用Delphi 6成功完成了所有这些,所以Delphi 5不应该是不可能的。

从根本上说,您需要切换到SAX解析器。基于DOM的解析器不会与32位地址空间和巨大的XML文件混合使用。