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

有没有一种方法可以从Java中的序列化对象大小估计(大致)内存对象大小

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

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

您可能会发现这个有趣的获取对象的大小

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

从readme.txt:

MemoryMeter与java.lang.instrument.Instrumentation.getObjectSize一样准确,它只声称提供“近似”结果,但实际上似乎按预期工作。

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