Java:通过TCP读/写压缩对象

时间:2012-06-08 14:23:50

标签: java sockets tcp compression objectinputstream

我必须通过套接字在TCP上传输一些记录。我使用了ObjectInputStreamObjectOutputStream,它运行正常。一个关键的想法是套接字打开一次并且必须在整个通信中保持打开,但每一方都不止一次地读写(因此它更像是持久连接)。

我尝试在写入之前压缩对象以提高整体性能,结果非常令人鼓舞,但是,由于我使用GZIPOutputStreamByteArrayOutputStream,因此内存开销过大而且有些情况下我得到OutOfMemory错误。

我尝试了DeflaterOutputStream,但它似乎不适合写入对象。 有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:4)

Java序列化很方便,但在大小和CPU使用方面都相当无效。如果您想要高性能,建议您使用完全不同的通信协议,例如基于Protocol Buffers或其他轻量级的通信协议。