Serialized object size vs in memory object size in

2020-03-13 04:18发布

问题:

Is there a way of estimating (roughly) in memory object size from Serialized object size in Java

回答1:

The size in memory will be usually between half and double the serializable size. The most extreme example might be the Byte which is more than 80 bytes Serialized can be 16 bytes in memory.

You can use a profiler to tell you how much memory an object uses. Another way is to use a tool based on Instrumentation.getObjectSize(object)

You might find this interesting Getting the size of an Object



回答2:

A very nice Tool for this challenge: https://github.com/jbellis/jamm

From the readme.txt:

MemoryMeter is as accurate as java.lang.instrument.Instrumentation.getObjectSize, which only claims to provide "approximate" results, but in practice seems to work as expected.

MemoryMeter uses reflection to crawl the object graph for measureDeep. Reflection is slow: measuring a one-million object Cassandra Memtable (that is, 1 million children from MemoryMeter.countChildren) took about 5 seconds wall clock time.