我正在使用 expat 解析器来解析一个大约 15 GB 的 XML 文件。问题是它抛出“内存不足”错误并且程序中止。
我想知道是否有人遇到过与 expat 解析器类似的问题,或者这是一个已知错误并已在更高版本中得到纠正?
最佳答案
我以前用过 expat 来解析大文件,从来没有遇到过任何问题。我假设您使用的是 SAX 而不是 expat DOM 包装器之一。如果您使用的是 DOM,那么这就是您的问题所在 - 它实际上是在尝试将整个文件加载到内存中。
您是否在解析 XML 时分配对象并且可能没有释放它们?那将是我要检查的第一件事。一种检查问题是否真的出在 expat 上的方法——如果您将程序缩减为具有空标签处理程序的简单版本(即它只解析文件而不对结果执行任何操作),它是否仍然会耗尽内存?
关于c++ - 外籍解析器 : memory consumption,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/658016/