首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用EXI:如何处理大型XML文件(~ 20 GB)?

使用EXI:如何处理大型XML文件(~ 20 GB)?
EN

Stack Overflow用户
提问于 2017-06-30 09:19:35
回答 1查看 592关注 0票数 0

我目前正在评估EXI以压缩大型XML文件。大型是指一个20 GB (20)的XML文件。

EXI压缩编解码器和非EXI压缩编解码器(gzip/lzma )都集成在运行在Java虚拟机上的Scala应用程序中。GZIP和LZMA是由公用压缩提供的.所有编解码器都是在这些第三方库中用Java实现的。

在6GB的64位Linux系统上(JVM为6GB),Exificient和OpenExi都可以对进行编码,但当原始XML文件为10 GB时,无法对进行解码。

  • Exificient使用OutOfMemory失败
  • OpenExi在ArrayIndexOutOfBoundsException: 1000000中失败
  • GZIP/LZMA没有问题
  • Oracle JDK: 1.8-8u40
  • JVM args:-Xmx6g -XX:+UseG1GC -XX:+UseStringDeduplication
  • 生成的EXI编码的XML文件的大小为70 MB。

我的问题:

  • EXI是否意味着(由于它的底层算法),随着XML输入文件大小的增加,内存使用量会增加?如果是的话,是否有一个简单的公式来计算所需的内存?
  • 除了分配更多的内存之外,人们还能做些什么来使它工作吗?
EN

回答 1

Stack Overflow用户

发布于 2017-07-24 14:20:23

EXI格式提供了限制内存使用的“选项”。

https://www.w3.org/TR/exi/#options

valueMaxLengthvaluePartitionCapacity限制EXI字符串表中的长度和条目数。

例如,将valueMaxLength设置为16意味着如果大于16,则不会向表中添加任何字符串。字符串表在处理过程中可能会增长,并且需要一直保存到结束。

选项valuePartitionCapacity限制表中字符串的数量(循环方式)。

当使用EXI压缩时,请考虑同时减少blockSize

希望这能帮上忙

-丹尼尔

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44842934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档