云栖问答

找不到答案?去提问题

2016-07-20 20:42:42

深拷贝优于序列化的原因是什么?有没有更快的解决方案


来源: [直播] 基于Java容器的多应用部署技术实践

深拷贝优于序列化的原因是什么?有没有更快的解决方案

1个回答

0

weipeng2k

深拷贝与序列化相比,相反对于内存的开销会更好,原因在于序列化是将所有的数据变为bytes,而深拷贝在处理基本数据类型时直接传递引用。

比如一个数据对象Person

,----------------------.
|Person                |
|----------------------|
|-String name;         |
|-String password;     |
|-String title;        |
|-int rank;            |
|-int age;             |
|----------------------|
|+String getName();    |
|+String getPassword();|
`----------------------'

如果是序列化需要将Person转化成为一堆bytes,那么里面的name、password等数据都需要按照对应的序列化协议放置到那堆bytes中。

可是如果是深拷贝,Person从一个加载器识别的对象转换成另一个加载器识别的对象,这两个对象对于name,password这些基础属性的引用是同一份。如果name的值是 abc ,那么序列化就会有两份内存(对象和序列化后的bytes)存储两个 abc , 而深拷贝只有一份。

内存节省的同时,不会进行序列化后的网络传输,直接将请求对象交给另外的应用进行处理,从而效率有提升。

1
GO
2133
浏览
0
收藏
邀请他人回答