c++ - 外籍解析器 : memory consumption

标签 c++ xml large-files out-of-memory expat-parser

我正在使用 expat 解析器来解析一个大约 15 GB 的 XML 文件。问题是它抛出“内存不足”错误并且程序中止。

我想知道是否有人遇到过与 expat 解析器类似的问题,或者这是一个已知错误并已在更高版本中得到纠正?

最佳答案

我以前用过 expat 来解析大文件,从来没有遇到过任何问题。我假设您使用的是 SAX 而不是 expat DOM 包装器之一。如果您使用的是 DOM,那么这就是您的问题所在 - 它实际上是在尝试将整个文件加载到内存中。

您是否在解析 XML 时分配对象并且可能没有释放它们?那将是我要检查的第一件事。一种检查问题是否真的出在 expat 上的方法——如果您将程序缩减为具有空标签处理程序的简单版本(即它只解析文件而不对结果执行任何操作),它是否仍然会耗尽内存?

关于c++ - 外籍解析器 : memory consumption,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/658016/

相关文章:

java - 在 Java 中打开一个大文件非常慢

ruby - Sax 从 S3 解析大文件

c++ - 字符串插入排序

c++ - std::bind()、可变参数模板和完美转发如何结合?

xml - 如何使用 saxon 内置目录功能

java - 未定义名为 'springSecurityFilterChain' 的 bean - Spring 4 Java 配置

c++ - 无法在 VS2015 中禁用编译器警告

c++ - QPixmap 加载不起作用

php数组到xml的转换,即使是嵌套数据

php - 使用 PHP 读取大型 excel 文件