Я сжимаю файлы размером более 2 ГБ в Java, используя последовательное применение двух алгоритмов сжатия; один на базе LZ и один на основе Хаффмана. (Это похоже на DEFLATE).
Поскольку 2 ГБ слишком велики для хранения в каком-либо буфере, я должен передать файл через один алгоритм, выводящий временный файл, а затем передать этот временный файл через второй алгоритм, выводящий окончательный файл.
Альтернативой является сжатие файла блоками по 8 МБ (размер, при котором я не получаю сообщение об ошибке нехватки памяти), но тогда я не могу в полной мере воспользоваться преимуществами избыточности во всем файле.
Любые идеи, как выполнить эти операции аккуратнее. Никаких временных файлов и сжатия в блоках? Какие-либо другие инструменты сжатия сжимают блоки? Как они решают эту проблему? С Уважением
-Xms
и-Xmx
JVM. - person Jim Garrison   schedule 06.02.2014