繁体   English   中英

如何读取Java中序列化对象的大小(以字节为单位)?

[英]How can I read the size in bytes of a serialized object in Java?

在反序列化之前或之后,是否可以从流中读取序列化对象的总使用大小?

我能找到的唯一方法是再次将其序列化为字节缓冲区,然后查看该缓冲区的总占用大小。 这行得通,但似乎浪费资源。

编辑:我对对象实例加载到内存时使用的空间不感兴趣。 仅序列化的大小(以字节为单位)。

您将无法在反序列化之前确定大小,因为序列化协议不会浪费时间来预先计算输出的大小。 它只是处理对象直到完成。

要在反序列化后读取大小,可以在ObjectInputStream和基础流之间插入一个CountingInputStream

编辑:如果您绝对需要确定大小预序列化,那么我想您可以序列化为ByteArrayOutputStream ,并将结果字节写入输出。 但这将要求发送者和接收者都同意如何处理字节。

序列化的大小是所有字段及其本身的总和。 我假设您已经找到了一种检查对象大小的好方法,因此请检查对象的大小,然后将其添加到所有字段中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM