我想通過客戶端到服務器的套接字發送一些對象。我可以序列化它們像對象或轉換爲XML。哪種方法需要更少的內存?Java中的序列化對象
1
A
回答
3
序列化它們將佔用更少的空間。您還可以嘗試kryo爲您的序列化對象獲得更好的大小。它支持Deflate壓縮/解壓縮。但請注意,它是非標準的,因此套接字的另一面也必須使用該庫以反序列化。
3
自然而然地序列化需要很少的內存轉換爲XML ......想想所有那些<...>
和</...>
標籤!序列化將使用數字來處理所有數據,而不是ASCII字符。
另外,你可以序列化到xml! http://x-stream.github.io/
1
轉換爲XML佔用更多的空間,客戶端和服務器的不僅僅是送他們上連載,因爲你基本上覆制內容到一個新的變量。發送它們的序列化可能不會使用數據包的全部容量,但是您始終可以處理第一個數據包並使用下一個數據包覆蓋它以節省一些空間(至少這是我目前的做法)。
但是,序列化它可能會使傳輸速度變慢,因爲您必須發送多個包。另一方面,如果你把所有東西都放到一個XML中,你可能會遇到包的大小限制
(我在說的DatagramSocket
和DatagramPacket
在這裏,因爲這些是我使用的,我不知道如何情況與其他轉移方式一樣)。
1
XML vs Java Serialization,可以使用更多帶寬,但使用的主要內存將是您的對象。如果你擔心使用的內存,我會讓你的對象結構更有效率(假設它是一個真正的問題)
當你序列化/反序列化,你可以流XML和Java對象,這就是爲什麼他們不應該使用大量內存。
顯然,如果你在發送前建立自己的序列化的數據,這將是低效的。
相關問題
- 1. Java - 序列化對象中的序列化對象的問題
- 2. Java可序列化對象
- 3. 序列化Java對象
- 4. 序列化java對象
- 5. Java和對象序列化
- 6. Java對象序列化java.io.UTFDataFormatException
- 7. 序列化Java對象CSV
- 8. Java中的SOAP對象序列化
- 9. 反序列化Java中的對象
- 10. 反序列化Java中的JSON對象
- 11. 序列化對象的Java中
- 12. Java中的對象序列化
- 13. 在Java中反序列化一個序列化的php對象
- 14. 如何在java中序列化/反序列化對象列表?
- 15. 手動對象序列化在Java中
- 16. 在java中序列化可變對象
- 17. 反序列化JSON對象在Java中
- 18. 在java中正確序列化對象
- 19. 的Java GSON序列化和內部HashMap的反序列化對象(鍵,對象)
- 20. 反序列化對象列表java
- 21. JAVA嵌套對象的XML序列化
- 22. 與序列化對象的Java
- 23. 反序列化的Java對象
- 24. BlazeDs Java對象的序列化
- 25. 手動XML序列化的Java對象
- 26. 舊對象的Java反序列化
- 27. 的Java序列化GSON成JSON對象
- 28. setAttribute:不可序列化的屬性(Java對象序列化)
- 29. 使用C#序列化Java可反序列化的對象
- 30. Java的「設置對象」,序列化/反序列化
服務器是否可以反序列化Java對象? – 2012-02-27 14:49:59
是的..我只想選擇最好的方法,不要花費太多的內存 – 2012-02-27 14:51:39
你想保護DoS嗎? – 2012-02-27 14:52:29