Apache Ignite:Pojo vs BinaryObject

时间:2018-04-15 22:20:54

标签: java performance ignite distributed-caching

我有一个自定义对象,我将其转换为BinaryObject(使用BinaryObjectBuilder),然后将其放入点火缓存中。

我的自定义对象的深度大约是500字节,BinaryObject的大小是大约8 MB,实际发送到Ignite服务器的数据大小是~300字节。

由于BinaryObject是Ignite在内部存储数据的方式,在客户端创建BinaryObject并将服务器发送给发送pojo并让服务器在内部将其转换为BinaryObject的优缺点是什么?在客户端创建BinaryObject的缺点是我使用~8.5MB的RAM将ONE BinaryObject存储在客户端jvm堆中,这将远远小于服务器jvm堆。

1 个答案:

答案 0 :(得分:1)

这是Apache Ignite BinaryObject Bloat

的副本

将对象转换为BinaryObjects时,对象的大小不会变为8 MB。每个BinaryObject都存储一些共享数据的链接,每个对象都是相同的。而且这些数据不是通过网络发送的。

尝试使用可以构建支配树的工具分析堆转储。您将看到,BinaryObject的保留大小约为300字节,而不是8兆字节。