我有一个自定义对象,在将其放入点火缓存之前,正在将其转换为BinaryObject(使用BinaryObjectBuilder)。我计算了自定义对象的深度大小,大约为500个字节。

但是,当我计算BinaryObject的大小时,大约是8 MB。

这是预期的吗?

最佳答案

如果看一下BinaryObjectImpl类,您会发现某些字段具有@GridDirectTransient批注,这意味着在序列化过程中将忽略这些字段。这些都是很大的对象,例如BinaryContext,其中包含很多系统内容。

如果要获得BinaryObject大小的近似值,可以将其强制转换为BinaryObjectImpl并在其上调用BinaryObjectImpl#array()方法。您将获得一个字节数组,它是对象的序列化表示。此数组的大小将为您提供BinaryObject大小的近似值。

09-10 20:50