What does "retained size" mean in jVisualVM's memory inspector?
Asked Answered
H

3

18

Jvisualvm heap dump on summary tab has functionality to inspect bigest objects by retained size.

What does retained really mean? How size of an object tree is calculated and shown here?
In case I can see here object (10M) and it's member object (5M) how should I calculate heap impact. Does both of them took 10M or 15M of the heap?
Why I can't see none of our facade huge application objects?

Thanks.

Highkeyed answered 26/9, 2012 at 11:31 Comment(0)
E
12

What does retained really mean?

How big it would be after a full gc. E.g. a WeakHashMap with a large number of entries could be empty after a GC.

How size of an object tree is calculated and shown here?

The JVM determines this using an internal API.

In case I can see here object (10M) and it's member object (5M) how should I calculate heap impact. Does both of them took 10M or 15M of the heap?

The total is 10 MB. If this is your biggest problem, wouldn't worry about it unless you have a machine with only a few 100 MB. (In which case I would upgrade it)

Why I can't see none of our facade huge application objects?

Perhaps they are not as big in memory as you think?? e.g. they may be expensive to load, but that doesn't make them huge.

BTW: VisualVM is a nice free memory profiler but its only useful for finding obvious problems. I would try a commercial profiler like YourKit (which you can get a free eval license for) for comparison.

Empirin answered 26/9, 2012 at 11:39 Comment(2)
facade object contains links to big chache objects. In jvisuavm I can see cache object at the top, but can't see facade object that should be at least same size.Highkeyed
I your situation, I would try a commercial profiler to see if it gives you a different view. Different profilers work differently so running more than one can be helpful if you are not confident one is giving you the right results.Empirin
H
1

I think the best definition for "Retained" in the VisualVM is the amount of memory that will remain after garbage collection.

In some cases it can be bigger than the "Size" since it reference other objects (or collections) directly or indirectly.

Hassler answered 28/4, 2020 at 6:30 Comment(0)
O
-1

In case I can see here object (10M) and it's member object (5M) how should I calculate heap impact. Does both of them took 10M or 15M of the heap?

I think it actually took 15M of the heap, object retained size 10M means, 10M will be free when this object(10M) is swept. The member object(5M) is still referenced by other object, and still in the heap. Member object's retained size can be larger than object itself.

Oystercatcher answered 8/8, 2018 at 7:37 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.