Я был бы юниором, я предполагаю:) Я думаю, что оценил бы неофициальный подход. Это, вероятно, во многом зависит от Ваш и символы Вашего mentee, но я сказал бы, что Вы учитесь лучше всего, если у Вас нет эго в пути. Повредите лед, удостоверьтесь, что существует обратная связь в оба направления. Вещи как рассмотрение кода (оба пути?) и случайное парное программирование может работать, и если существует хорошее соответствие, это может быть большая забава, также!
Согласно вашему комментарию к ответу Сэма, вы, очевидно, создали ZipOutputStream, который обертывает ByteArrayOutputStream. ByteArrayOutputStream, конечно, кэширует сжатый результат в памяти. Если вы хотите, чтобы он был записан на диск, вы должны обернуть ZipOutputStream вокруг FileOutputStream.
ZipOutputStream основан на потоке, он не удерживает память. Ваш БУФЕР может быть слишком большим.
Есть библиотека под названием TrueZip , которую я успешно использовал в прошлом для такого рода вещей.
Я не могу гарантировать, что она лучше справляется с фронт буферизации. Я знаю, что он делает много вещей с помощью собственного кода, а не зависит от Zip API JDK.
Так что, на мой взгляд, стоит попробовать.
Интересно, если это из-за того, что вы храните контент в ZipEntry, возможно, он в основном загружает все свое содержимое перед записью ZipEntry. Вам нужно использовать Zip? Если вам нужно сжать только один поток данных, вы можете вместо этого посмотреть GZIPOutputStream. Я считаю, что у него не будет такой проблемы.
Надеюсь, это поможет.