Java中序列化对象大小与内存对象大小的比较

时间:2011-08-22 11:07:43

标签: java memory serialization

是否有一种方法可以从Java中的序列化对象大小(粗略地)估计内存对象大小

2 个答案:

答案 0 :(得分:7)

内存中的大小通常在可序列化大小的一半到两倍之间。最极端的例子可能是Byte,它超过80个字节.Cerialized在内存中可以是16个字节。

您可以使用分析器告诉您对象使用了多少内存。另一种方法是使用基于Instrumentation.getObjectSize(object)

的工具

你可能会发现这个有趣的Getting the size of an Object

答案 1 :(得分:0)

这个挑战的一个非常好的工具: https://github.com/jbellis/jamm

来自readme.txt:

  

MemoryMeter准确无误   java.lang.instrument.Instrumentation.getObjectSize,只声明   提供“近似”结果,但在实践中似乎起作用   预期

     

MemoryMeter使用反射来抓取measureDeep的对象图。   反思很慢:测量一百万个物体Cassandra Memtable   (就是来自MemoryMeter.countChildren的100万儿童)   约5秒的挂钟时间。