我想通过客户端到服务器的套接字发送一些对象。我可以序列化它们像对象或转换为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对象CSV
- 5. Java中的对象序列化
- 6. 反序列化Java中的JSON对象
- 7. 反序列化Java中的对象
- 8. 在Java中反序列化一个序列化的php对象
- 9. 手动对象序列化在Java中
- 10. 在java中序列化可变对象
- 11. 的Java GSON序列化和内部HashMap的反序列化对象(键,对象)
- 12. 与序列化对象的Java
- 13. 反序列化的Java对象
- 14. setAttribute:不可序列化的属性(Java对象序列化)
- 15. 序列化 - 如何保护序列化的JAVA对象?
- 16. 使用C#序列化Java可反序列化的对象
- 17. Java的“设置对象”,序列化/反序列化
- 18. Java-使用Xstream序列化不可序列化的对象
- 19. 反序列化ISODate对象到Java POJO
- 20. Jruby on Rails java对象序列化
- 21. Java网络对象序列化
- 22. 将对象序列化为XML Java
- 23. 想知道Java对象 - json序列化
- 24. 序列化对象返回null Java
- 25. java将对象序列化为ByteArray
- 26. Java对象序列化性能提示
- 27. 反序列化多个Java对象
- 28. 附加Java序列化对象
- 29. Vertx 3 - Java序列化大型对象
- 30. 对象反序列化 - 从序列化对象中取回int数组对象
服务器是否可以反序列化Java对象? – 2012-02-27 14:49:59
是的..我只想选择最好的方法,不要花费太多的内存 – 2012-02-27 14:51:39
你想保护DoS吗? – 2012-02-27 14:52:29