我有数百万个对象,我需要将它们保存到缓存中。为了减少这些对象的大小和序列化/反序列化的时间,我使用protobuf对象而不是POJO,然后将它们作为字节数组保存到Ehcache中。但是Ehcache会将protobuf字节数组放入Ehcache的对象中,然后将对象序列化到内存中,因此使用protobuf的优势已经消失。
我可以直接将protobuf对象的字节表示保存到Ehcache中吗?
发布于 2012-11-22 18:09:04
当您说"Ehcache将把原始字节数组放入Ehcache的对象“时,我猜您指的是net.sf.ehcache.Element,对吗?但是“然后将对象序列化到内存中”,您在这里是什么意思?为了澄清这一点,Ehcache不序列化堆中存储的任何内容。如果您谈到offHeap存储,那么是的东西会被序列化。但是如果存储字节数组,序列化这些值是.直截了当。另外,您不应该担心内部数据结构序列化,这些都是非常具体的处理,即使您能够在那里使用protobuf,您也不会获得任何东西。
但是,在域实例中使用protobuf与普通Java序列化相比,您所获得的所有好处都不会失去。
https://stackoverflow.com/questions/13450762
复制相似问题