visualvm icon indicating copy to clipboard operation
visualvm copied to clipboard

Why has the "compare to another heap dump" feature disappeared ?

Open Largo2005 opened this issue 7 years ago • 15 comments

One of the useful feature of VisualVM is the possibility to compare two head dumps to analyze memory leak issues. But in the new release 1.4, this feature seems not to be present anymore. The new release has a great heap explorer (Heap Viewer) and it should be nice to use it to explore heap dumps comparaison. Is it normal or do I miss something ?

Largo2005 avatar Jan 25 '18 15:01 Largo2005

Thanks for your feedback! You're right, currently the new Heap Viewer can't compare two heap dumps. This feature wasn't ready for 1.4, we'll add it later.

jisedlac avatar Jan 25 '18 15:01 jisedlac

Thanks for reply. Does already exist a alpha/beta version that I could use/test ?

Largo2005 avatar Jan 25 '18 16:01 Largo2005

Unfortunately this feature isn't available for testing yet. Please stay tuned for the upcoming release(s).

jisedlac avatar Jan 26 '18 09:01 jisedlac

OK.

Hope that will come very quickly as VisualVM is a great tool and the new Heap Viewer is far much better in the 1.4 version and linked to the compare feature, it will definitively be a memory leak killer !

Largo2005 avatar Jan 26 '18 09:01 Largo2005

Thanks! Reopening the issue to keep track of returning back the possibility to compare two heap dumps.

jisedlac avatar Jan 26 '18 16:01 jisedlac

The initial implementation of comparing two heap dumps is available for testing in master. We'll appreciate any feedback on this feature.

jisedlac avatar Feb 08 '18 11:02 jisedlac

Hi Jiri,

Thanks a lot for your work !!

I've tried the new version of visualvm with comparing feature. Again thanks to add it ! I'm surprised when comparing 2 heap dumps with the old version of the tool and your version, results are not equal. This is quite strange; some entries are missing in the beta version.

Here is what it looks like:

With old version:

[image: Inline image 3]

With beta version:

[image: Inline image 2]

The "byte[]" entry which stands on the first line in the beta version, is only on line 5 in the beta version...

Do you plan to be able to explorer items (to see instances of each new objects)? This helps a lot finding memory leaks.

Thanks, Pierre

On Thu, Feb 8, 2018 at 12:11 PM, Jiri Sedlacek [email protected] wrote:

The initial implementation of comparing two heap dumps is available for testing in master. We'll appreciate any feedback on this feature.

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub https://github.com/oracle/visualvm/issues/57#issuecomment-364080008, or mute the thread https://github.com/notifications/unsubscribe-auth/AiJlmaGjZolDKiNhTdnAbLgX-0YuRlIXks5tStZpgaJpZM4RtAke .

Largo2005 avatar Feb 09 '18 14:02 Largo2005

Unfortunately I don't see the images so I can't comment on the differences.

Regarding exploring new objects - the .hprof format doesn't contain the information required for identifying individual instances, we can't recognize the newly created objects.

jisedlac avatar Feb 09 '18 15:02 jisedlac

Here are links to images:

Old version (with SDK) https://ibb.co/cVvNLc

Beta version: https://ibb.co/iPrU0c

On Fri, Feb 9, 2018 at 4:22 PM, Jiri Sedlacek [email protected] wrote:

Unfortunately I don't see the images so I can't comment on the differences.

Regarding exploring new objects - the .hprof format doesn't contain the information required for identifying individual instances, we can't recognize the newly created objects.

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub https://github.com/oracle/visualvm/issues/57#issuecomment-364463814, or mute the thread https://github.com/notifications/unsubscribe-auth/AiJlmcZOjzrDoJ0JzrEetMjeepWj3-Gtks5tTGK4gaJpZM4RtAke .

Largo2005 avatar Feb 09 '18 18:02 Largo2005

I'm unable to reproduce the missing entries on my side using various heap dumps. Could you please doublecheck you don't have any filter set in the comparison tab?

In case you're still seeing the difference, could you by any chance share (any) heap dumps reproducing the problem or describe steps to create them? Thanks!

jisedlac avatar Feb 12 '18 10:02 jisedlac

I'm sorry but the heap dumps were deleted :-( (I don't know how...). I tried to reproduce the problem by taking some dumps but I didn't success until now. If I see a difference again, I will keep you in touch.

Regarding exploring new objects, the old version did a "Show in Instances view" which allow us to explorer the instances. Once you showed the instances, is it possible to identify the newly created objects?

Largo2005 avatar Feb 13 '18 11:02 Largo2005

The "Show in Instances View" action in the old version displayed all instances of the selected class as recorded in the first (opened) heap dump. This might be misinterpreted as that the instances are somehow related to the comparison with the other dump.

The fact is that there are no unique identificators for instances stored in a .hprof heap dump. This means that there's no way to reliably identify the same instance in two heap dumps, or to decide if an instance is present in one heap dump and not present in another heap dump.

Various heuristics may be used to make assumptions on instances identity between two heap dumps, but none of them will work reliably until the .hprof format changes and provides stable instance identificators which won't change among successive heap dumps.

jisedlac avatar Feb 13 '18 16:02 jisedlac

any plans for making this feature available again soon..?

6harat avatar May 08 '21 06:05 6harat

Comparing two heapdumps is available, see the comments above. Just load a heap dump, switch to Objects view and invoke the "Compare with another heap dump..." action.

jisedlac avatar May 08 '21 08:05 jisedlac

That "Compare with another heap dump..." feature is hard to find. i found it here: image

jukzi avatar Aug 15 '22 12:08 jukzi