我有一个自定义对象,我将其转换为BinaryObject(使用BinaryObjectBuilder),然后将其放入点火缓存中。
我的自定义对象的深度大约是500字节,BinaryObject的大小是大约8 MB,实际发送到Ignite服务器的数据大小是~300字节。
由于BinaryObject是Ignite在内部存储数据的方式,在客户端创建BinaryObject并将服务器发送给发送pojo并让服务器在内部将其转换为BinaryObject的优缺点是什么?在客户端创建BinaryObject的缺点是我使用~8.5MB的RAM将ONE BinaryObject存储在客户端jvm堆中,这将远远小于服务器jvm堆。
答案 0 :(得分:1)
这是Apache Ignite BinaryObject Bloat
的副本将对象转换为BinaryObjects时,对象的大小不会变为8 MB。每个BinaryObject都存储一些共享数据的链接,每个对象都是相同的。而且这些数据不是通过网络发送的。
尝试使用可以构建支配树的工具分析堆转储。您将看到,BinaryObject的保留大小约为300字节,而不是8兆字节。