pde*_*eva 7 java compression gzip nio
gzip输入/输出流不在Java直接缓冲区上运行.
是否存在直接在直接缓冲区上运行的压缩算法实现?
这样就不会有直接缓冲区复制到java字节数组进行压缩的开销.
我并不是要转移你的问题,但这真的是你的程序中一个很好的优化点吗?您是否使用分析器验证过确实存在问题?您提出的问题意味着您没有做过任何研究,而只是猜测您通过分配 byte[] 会遇到性能或内存问题。由于该线程中的所有答案都可能是某种黑客行为,因此您应该在修复问题之前验证是否确实存在问题。
回到问题,如果您想在 ByteBuffer 上“就地”压缩数据,答案是否定的,Java 中没有内置的功能可以做到这一点。
如果您像下面这样分配缓冲区:
byte[] bytes = getMyData();
ByteBuffer buf = ByteBuffer.wrap(bytes);
Run Code Online (Sandbox Code Playgroud)
您可以按照前面的答案建议通过 ByteBufferInputStream 过滤您的 byte[] 。