具有长类和字段名的Java默认序列化

时间:2019-03-07 11:07:25

标签: java object serialization

我的问题是,java序列化如何工作? 我正在使用长的类名和长的字段名序列化一个类的100_000个对象。 与使用简短的类/字段名称的另一个类相比,这要花费更多的时间。 那么Java序列化是否会为每个对象编写类和字段名称?或者只是每个对象的字段名称?

1 个答案:

答案 0 :(得分:2)

Java为序列化流中的每个类编写一次类描述符。类描述符包括类名称,字段名称和字段类型的类名称(或对类名称的引用)。

对象的类描述符嵌入到流中该类的第一个对象的对象中。同一类的后续对象仅包含对类描述符的引用。

字段名称仅出现在类描述符中。对象的字段值表示为值的数组;没有名字。

类描述符中的类和字段名称可能会被重复数据删除(虽然从规范中并不明显)。

有关更多详细信息,请参见Object Serialization Stream Protocol规范。


这意味着长的类名和字段名会使序列化的时间更长,但是名称的重复不应太多。

  

与另一个具有简短类/字段名称的类相比,这要花费更多的时间。

令人惊讶的是,如果(正如您似乎在说的那样)将100个相同类的对象放入流中。