我必须通过套接字在TCP上传输一些记录。我使用了ObjectInputStream
和ObjectOutputStream
,它运行正常。一个关键的想法是套接字打开一次并且必须在整个通信中保持打开,但每一方都不止一次地读写(因此它更像是持久连接)。
我尝试在写入之前压缩对象以提高整体性能,结果非常令人鼓舞,但是,由于我使用GZIPOutputStream
和ByteArrayOutputStream
,因此内存开销过大而且有些情况下我得到OutOfMemory错误。
我尝试了DeflaterOutputStream
,但它似乎不适合写入对象。
有没有办法解决这个问题?
答案 0 :(得分:4)
Java序列化很方便,但在大小和CPU使用方面都相当无效。如果您想要高性能,建议您使用完全不同的通信协议,例如基于Protocol Buffers或其他轻量级的通信协议。