是否有一种方法可以从Java中的序列化对象大小(粗略地)估计内存对象大小
答案 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秒的挂钟时间。