如何在Java中估计对象的序列化大小而不实际序列化它们?
为了增强集群中的消息传递,在运行时了解消息的大小非常重要(我应该更喜欢处理本地还是远程)。
我只可以找到关于基于java工具估计对象内存大小的框架。我已经测试了classmexer,它没有接近序列化大小和sourceforge SizeOf。
在一个小的测试用例中,SizeOf的错误率约为10%,比序列化快10倍。(仍然瞬态完全破坏了估计,并且由于例如ArrayList是瞬态的,但被序列化为数组,因此修补SizeOf并不容易。但我可以忍受)
另一方面,10%的错误速度提高了10倍似乎不是很好。任何想法,我怎么能做得更好?
更新:我还测试了ObjectSize(http://sourceforge.net/projects/objectsize-java)。结果似乎只适用于非继承对象:(