Apache Ignite BinaryObject Bloat

时间:2018-04-11 16:19:37

标签: java apache performance ignite distributed-caching

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

但是当我计算BinaryObject的大小时,它是一个惊人的~8 MB。

这是预期的吗?

由于

1 个答案:

答案 0 :(得分:4)

如果查看BinaryObjectImpl类,您会看到某些字段有@GridDirectTransient个注释,这意味着在序列化过程中会忽略这些字段。这些是非常大的对象,比如BinaryContext,它包含了很多系统内容。

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