有没有办法 gzip Java 中的字节缓冲区?
Is there a way to gzip a byte buffer in Java?
我有相当大的 DirectByteBuffer
,我想从中生成一个 gzipped DirectByteBuffer
,而不将其内容转移到堆中。
标准 java.util.Deflater
没有帮助,因为它在 byte[]
上运行,根据定义,它是堆上的。
在 Java 中有没有办法做到这一点?或者我必须直接通过 JNI
?
调用 libzip
从 Java11 开始,有
和
允许将输入和输出指定为字节缓冲区。当然,这是否真的允许直接堆外处理取决于实现,但快速查看 OpenJDK 会发现它有一个 native
缓冲区到缓冲区处理的方法。
从技术上讲,它不是 GZip,除非您也在编写该文件格式的工件,但我想,您主要对压缩而不是文件格式感兴趣。
我有相当大的 DirectByteBuffer
,我想从中生成一个 gzipped DirectByteBuffer
,而不将其内容转移到堆中。
标准 java.util.Deflater
没有帮助,因为它在 byte[]
上运行,根据定义,它是堆上的。
在 Java 中有没有办法做到这一点?或者我必须直接通过 JNI
?
libzip
从 Java11 开始,有
和
允许将输入和输出指定为字节缓冲区。当然,这是否真的允许直接堆外处理取决于实现,但快速查看 OpenJDK 会发现它有一个 native
缓冲区到缓冲区处理的方法。
从技术上讲,它不是 GZip,除非您也在编写该文件格式的工件,但我想,您主要对压缩而不是文件格式感兴趣。