MSXML 内存不足 -Delphi
MSXML Out Memory -Delphi
当我们尝试转换 XML 大约 160MB 时,MSXML 因内存不足而失败。
有趣的是它只对特定的服务器失败,我可以在我的电脑上成功地转换同一个文件而没有任何问题。
以下是我尝试过的方法:
- 增加虚拟内存 - 没有效果
- 已经尝试卸载
dll 帮助了一段时间,但一旦文件大小再次变大
仅在该服务器上
我试图通过设置 PE 标志让我的应用程序识别大地址,但感觉这可能不适用于 delphi 5。
注意:我知道 MSXML 使用 DOM 模型并将所有内容拉入内存,但我们无法从该模型中移动并修复此问题。
如有任何建议,我们将不胜感激。
DELPHI 5
男男性接触者XML 6
大地址感知可能是您唯一的希望。使用内置的 Borland 内存管理器,您将无法做到这一点。因此,使用 FastMM 或什至基于平台 HeapAlloc
的替代品会让您克服这个障碍。大地址感知和 RTL/VCL 可能还有其他问题,但我有信心。我用 Delphi 6 成功地完成了所有这些,所以 Delphi 5 不应该是不可能的。
从根本上说,您需要切换到 SAX 解析器。基于 DOM 的解析器不会与 32 位地址 space 和巨大的 XML 文件混合。
MSXML 因内存不足而失败。
有趣的是它只对特定的服务器失败,我可以在我的电脑上成功地转换同一个文件而没有任何问题。
以下是我尝试过的方法:
- 增加虚拟内存 - 没有效果
- 已经尝试卸载 dll 帮助了一段时间,但一旦文件大小再次变大 仅在该服务器上
我试图通过设置 PE 标志让我的应用程序识别大地址,但感觉这可能不适用于 delphi 5。
注意:我知道 MSXML 使用 DOM 模型并将所有内容拉入内存,但我们无法从该模型中移动并修复此问题。
如有任何建议,我们将不胜感激。 DELPHI 5 男男性接触者XML 6
大地址感知可能是您唯一的希望。使用内置的 Borland 内存管理器,您将无法做到这一点。因此,使用 FastMM 或什至基于平台 HeapAlloc
的替代品会让您克服这个障碍。大地址感知和 RTL/VCL 可能还有其他问题,但我有信心。我用 Delphi 6 成功地完成了所有这些,所以 Delphi 5 不应该是不可能的。
从根本上说,您需要切换到 SAX 解析器。基于 DOM 的解析器不会与 32 位地址 space 和巨大的 XML 文件混合。