2012-06-08 74 views
1

我必須通過TCP通過套接字傳輸一些記錄。我用ObjectInputStreamObjectOutputStream,它工作得很好。一個關鍵的想法是套接字打開一次,並且必須在整個通信過程中保持打開狀態,但是每一方都會多次讀寫(所以它更像是一個持續連接)。Java:通過TCP讀取/寫入壓縮對象

我試圖以提高整體性能寫他們之前壓縮的對象,結果是相當令人鼓舞,但由於我用GZIPOutputStreamByteArrayOutputStream,內存開銷太大,在某些情況下,我得到的內存溢出錯誤。

我試過DeflaterOutputStream但它似乎不適合寫入對象。 有什麼辦法可以解決這個問題嗎?

+0

你可以發表一些你正在使用的示例代碼嗎? – Santosh

回答

4

Java序列化很方便,但在規模和CPU使用率方面效果不佳。如果您需要高性能,建議您使用完全不同的通信協議,例如基於Protocol Buffers或其他重量輕的產品。