为了提高集群中的消息传递效率,了解消息大小(应该优先处理本地还是远程)非常重要。
我可以找到一些基于Java工具的对象内存大小估算框架。我测试了classmexer和sourceforge SizeOf,但它们都无法接近序列化大小。
在小型测试用例中,SizeOf偏差约为10%,速度比序列化快10倍。(仍然有transient会完全破坏估算,例如ArrayList是transient但作为Array进行序列化,因此很难修补SizeOf。但我可以接受这个问题)
另一方面,速度快10倍且误差为10%似乎并不是很好。您有什么更好的想法吗?
更新:我还测试了ObjectSize(http://sourceforge.net/projects/objectsize-java)。结果似乎只适用于非继承对象 :(
我可以找到一些基于Java工具的对象内存大小估算框架。我测试了classmexer和sourceforge SizeOf,但它们都无法接近序列化大小。
在小型测试用例中,SizeOf偏差约为10%,速度比序列化快10倍。(仍然有transient会完全破坏估算,例如ArrayList是transient但作为Array进行序列化,因此很难修补SizeOf。但我可以接受这个问题)
另一方面,速度快10倍且误差为10%似乎并不是很好。您有什么更好的想法吗?
更新:我还测试了ObjectSize(http://sourceforge.net/projects/objectsize-java)。结果似乎只适用于非继承对象 :(