美文网首页无戒学堂:365天极限挑战日更营Java 杂谈程序员
手写RPC框架,我学会了什么?(四):Java序列化机制到底有多

手写RPC框架,我学会了什么?(四):Java序列化机制到底有多

作者: 日更专用小马甲 | 来源:发表于2019-03-13 13:11 被阅读3次

上一篇 挖的坑里提到过想用Google的Protocol Buffer替换掉Java原生的序列化机制。作为“学究派”,原来是想对两者先做一个比较分析的。

过程中,无意看到一篇博客上提到Joshua Bloch(《Effective Java》的作者)建议不要再使用Java(原生的)序列化机制。

特地翻了下《Effective Java》的第三版,在ITEM85中有这样一句:

There is no reason to use Java serialization in any new system you write.

之前对于原生序列化机制性能低下的理解还停留在:

  • 它会携带类本身的信息。
  • 如果父类也实现了序列化,则会携带父类相关的信息。
  • 如果引用了某些对象,则引用对象也会被序列化。

而Bloch的例子里:待序列化的对象仅包含201个HashSet实例对象,每个实例对象仅包含3个或者更少的对象引用。序列化后的结果字节流达到了0.5M。反序列化时候,甚至需要计算2的100次hashcode。

戏谑一点的说“知道它烂,但不知道它这么烂”。因此也就没有再做对比分析的必要了。

不过Protocol Buffer确实不太容易上手,不仅有不少概念,连使用层面也没有fastjson这样的第三方库。等下一篇来填吧。

相关文章

网友评论

    本文标题:手写RPC框架,我学会了什么?(四):Java序列化机制到底有多

    本文链接:https://www.haomeiwen.com/subject/txxzpqtx.html