1

我必须通过套接字通过 TCP 传输一些记录。我用过ObjectInputStream并且ObjectOutputStream效果很好。一个批判性的想法是套接字打开一次,并且必须在整个通信过程中保持打开状态,但每一方都多次读取和写入(所以它更像是一个持久连接)。

为了提高整体性能,我尝试在编写对象之前对其进行压缩,结果非常令人鼓舞,但是由于我使用了GZIPOutputStreamand ByteArrayOutputStream,因此内存开销太大,在某些情况下会出现 OutOfMemory 错误。

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

4

1 回答 1

4

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

于 2012-06-08T14:29:54.317 回答