gzip 输入/输出流不在 Java 直接缓冲区上运行。
是否有直接在直接缓冲区上运行的压缩算法实现?
这样就不会产生将直接缓冲区复制到 java 字节数组进行压缩的开销。
我无意转移你的问题,但这就是really你的程序中有一个好的优化点吗?您是否使用分析器验证过确实存在问题?您提出的问题意味着您没有做过任何研究,而只是猜测您通过分配 byte[] 会遇到性能或内存问题。由于该线程中的所有答案都可能是某种黑客行为,因此您应该真正验证您是否actually在修复之前遇到问题。
回到问题,如果您想在 ByteBuffer 上“就地”压缩数据,答案是否定的,Java 中没有内置的功能可以做到这一点。
如果您像下面这样分配缓冲区:
byte[] bytes = getMyData();
ByteBuffer buf = ByteBuffer.wrap(bytes);
您可以按照前面的答案建议通过 ByteBufferInputStream 过滤您的 byte[] 。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)