【问题标题】:libxml2 taking huge memory(like 8GB for 600MB doc) for parsinglibxml2 占用大量内存(如 8GB 用于 600MB 文档)进行解析
【发布时间】:2016-01-26 18:33:39
【问题描述】:

我正在使用 libxml2 解析 xml 文档,我看到使用 valgrind xmlParseFile 需要 8GB 来解析 600MB 文件。我在 libxml2 站点上发现它通常需要 xml 文档大小的 4 倍,但对我来说它需要的远不止这些。 谁能指出可能是什么问题?

【问题讨论】:

    标签: libxml2


    【解决方案1】:

    这取决于文档的结构,但 10 到 20 的系数并不少见。 “4 次”引用可能是指 32 位系统。在 64 位系统上,开销更大,除了实际的字符数据外,每个元素和属性通常约为 120-150 个字节。

    对于这么大的数据,XML 通常是错误的选择。但是使用 libxml2 的流式解析器接口之一(SAX 或 xmlreader),您应该能够以低得多的内存开销来解析此类文档。

    【讨论】:

    • 感谢您的信息,我尝试使用带有 XML_PARSE_COMPACT 选项的 xmlReadfile 并将使用量降至 6.5GB,但这对我的应用程序来说也相当大
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-07
    • 2022-12-02
    • 1970-01-01
    • 2014-05-11
    相关资源
    最近更新 更多