現在、大きなXMLファイルを圧縮するためにEXIを評価中です。大とは、20 GB(20)のXMLファイルを意味します。EXIを使用する:大規模なXMLファイル(〜20 GB)を扱うには?
EXI圧縮コーデックとEXI圧縮以外のコーデック(gzip/lzma)はいずれも、Java仮想マシン上で動作するScalaアプリケーションに統合されています。 GZIPとLZMAはcommons-compressによって提供されます。すべてのコーデックは、これらのサードパーティライブラリのJavaで実装されています。 8ギガバイト(JVM 6 GB)64ビットLinuxシステムの
、両方ExificientとOpenExiはエンコードできるが、元のXMLファイルは10GB程度である場合、デコードに失敗します。 1.8-8u40
JVMの引数:GZIP/LZMA
OracleのJDKと1000000の
問題なし:
- ExificientはOpenExiは、ArrayIndexOutOfBoundsExceptionがで失敗のOutOfMemory
- で失敗
-Xmx6g -XX:+UseG1GC -XX:+UseStringDeduplication
resu 〜70メガバイト
の大きさを持っているEXI-エンコードされたXMLファイルをlting私の質問:
- EXIは、XML入力ファイルサイズに沿ってそのメモリ使用量が増加し(原因、それはアルゴリズムの基礎となるだし)を暗示していますか?もしそうなら、必要なメモリを計算する簡単な式がありますか?
- メモリを増やす場合を除いて、動作させるための方法はありますか?