我有一个自定义对象,我将其转换为BinaryObject(使用BinaryObjectBuilder),然后将其放入点火缓存中。我计算了自定义对象的深度大小,大约是500字节。
但是当我计算BinaryObject的大小时,它是一个惊人的~8 MB。
这是预期的吗?
由于
答案 0 :(得分:4)
如果查看BinaryObjectImpl
类,您会看到某些字段有@GridDirectTransient
个注释,这意味着在序列化过程中会忽略这些字段。这些是非常大的对象,比如BinaryContext
,它包含了很多系统内容。
如果您希望得到BinaryObject
大小的近似值,可以将其转换为BinaryObjectImpl
并在其上调用BinaryObjectImpl#array()
方法。您将获得一个字节数组,它是对象的序列化表示形式。此数组的大小将为您提供BinaryObject
大小的近似值。