restrictedinfinity
restrictedinfinity

Reputation: 435

Serialized object size vs in memory object size in Java

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

Upvotes: 10

Views: 8892

Answers (2)

user85155
user85155

Reputation: 1380

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.

Upvotes: 0

Peter Lawrey
Peter Lawrey

Reputation: 533510

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

Upvotes: 7

Related Questions