简短结论:Java 原生序列化(Java Serialization)性能损耗通常比较大,一般不建议在高性能/高并发场景下使用。
下面具体说一下。
Java 默认序列化(ObjectOutputStream / ObjectInputStream)主要问题有:
ObjectInputStream 容易成为反序列化攻击入口| 方案 | 速度 | 体积 | 可读性 | 跨语言 |
|---|---|---|---|---|
| Java 原生序列化 | 慢 | 大 | 否 | 否 |
| JSON(Jackson) | 中 | 中 | 是 | 是 |
| Hessian | 快 | 小 | 否 | 是 |
| Protobuf | 很快 | 很小 | 否 | 是 |
| Kryo | 很快 | 小 | 否 | 否 |
| MessagePack | 快 | 小 | 否 | 是 |
如果是 Java ↔ Java,Kryo 很常用
如果是 跨语言 / RPC,Protobuf / Hessian 更合适
Java 原生序列化并不是完全不能用,适合:
Java 原生序列化“能用,但贵”——慢、大、不安全,生产环境基本都被替代了。
如果你愿意,我可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。