On Fri, 29 Jan 2021 22:54:57 GMT, Chris Plummer <[email protected]> wrote:
>> Lin Zang has updated the pull request incrementally with two additional
>> commits since the last revision:
>>
>> - fix an issue of double printing error message.
>> - fix jcmd jmap issue and add test in BascJMapTest and code refine
>
> src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/SALauncher.java line 130:
>
>> 128: System.out.println(" --binaryheap To dump java
>> heap in hprof binary format.");
>> 129: System.out.println(" --dumpfile <name> The name of the
>> dump file.");
>> 130: System.out.println(" --gz <1-9> The compression
>> level for gzipped dump file.");
>
> `--dumpfile` and `--gz` can only be used with `--binaryheap`. That should be
> made clear in the help text.
>
> I just noticed that `jhsdb pmap` does not support the equivalent of
> `format=x` that the jcmd version does. However, the support is actually there
> in the SA JMap.java. It's confusing because both `jhsdb jmap` and the clhsdb
> `dumpheap` command use the JMap class, but neither support passing `format=x`
> to it. In order to get SA to dump with `format=x`, you would need to launch
> `sun/jvm/hotspot/tools/JMap` directly and pass in `-heap:format=x`. I'm not
> suggesting you fix that, but just something for us to be aware of.
>
> One question though. Have you tried running JMap directly to make sure the
> help output looks right. You've made fixes to it in this webrev, but since
> there are so many different "jmap" commands (5), and each with their own
> help, I've lost sight of whether or not this is even tested. I don't believe
> it is, but I wouldn't worry about that. However, since made changes to the
> help output, it would be good to at least check it out.
>
> And if you are wonder what the 5 `jmap` commands are:
>
> - SA's `jhsdb jmap --binaryheap` (which uses JMap.java with `-heap:format=b`)
> - SA's clhsdb `dumpheap` command (which also uses JMap.java with
> `-heap:format=b`)
> - executing SA's `sun/jvm/hotspot/tools/JMap` class directly
> - `jmap -dump` command (Uses Attach API's `heapdump` command, which uses
> hotspot `HeapDump` class)
> - `GC.heap_dump` dcmd, which also uses the hotspot `HeapDumper` class
>
> So really there are two implementations of heap dumping, one in the VM and
> one in SA, but a total of 5 ways to get to them. I'm just starting to get my
> head wrapped around all this myself. We've created a very confusing situation
> for us, and unfortunately I think some of the changes that got us here was
> driven by a goal to simply things.
Thanks for the thorough list, I have tested most of them but not all. I will
cover them and update here later.
> So really there are two implementations of heap dumping, one in the VM and
> one in SA, but a total of 5 ways to get to them. I'm just starting to get my
> head wrapped around all this myself. We've created a very confusing situation
> for us, and unfortunately I think some of the changes that got us here was
> driven by a goal to simply things.
Yes, it makes me even curious about why there can be two different
implementation of them (one by C++ and one by Java), it seems we need double
the work of adding new options for those tools, like parallal for jmap histo
and dump, etc.
-------------
PR: https://git.openjdk.java.net/jdk/pull/1712