Hi Thomas,
I had a look at this and overall seems okay - the output looks good
(though I'm not sure how useful the hex values are?).
Can't comment too much on the pretty-printing details - the proof is in
the output there. (Though have to wonder whether there is any existing
tree/graph printing logic somewhere in the OpenJDK code?)
Two queries:
1. Have we previously established whether a CSR request is needed for a
new Dcmd? (My initial feeling is that it is.)
2. Is ClassLoaderHierarchyVMOperation a safepoint VM-op? I would expect
it needs to be to be able to walk the CLD hierarchy, unless that is
already guaranteed to be safely walkable. Either way a comment clearly
stating that would be useful I think.
Related to #2, is it really possible to encounter a CLD in the process
of being unloaded? Wouldn't that happen at a safepoint?
Thanks,
David
On 28/05/2018 2:50 PM, Thomas Stüfe wrote:
All tests passed on jdk-submit.
Anyone interested in a review?
More output examples for jcmd VM.classloaders :
Spring framework, basic tree:
http://cr.openjdk.java.net/~stuefe/webrevs/8203682-jcmd-print-classloader-hierarchy/example_spring_short.txt
Spring framework, including all classes:
http://cr.openjdk.java.net/~stuefe/webrevs/8203682-jcmd-print-classloader-hierarchy/example_spring_long.txt
... Thomas
On Wed, May 23, 2018 at 2:46 PM, Thomas Stüfe <[email protected]> wrote:
Dear all,
(not sure if this would be a serviceability or runtime rfe, so sorry
for crossposting)
may I please have feedback/reviews for this small enhancement.
Bug: https://bugs.openjdk.java.net/browse/JDK-8203682
Webrev:
http://cr.openjdk.java.net/~stuefe/webrevs/8203682-jcmd-print-classloader-hierarchy/webrev.00/webrev/
This adds a new command to jcmd, "VM.classloaders". It complements the
existing command "VM.classloader_stats".
This command, in its simplest form, prints the class loader tree. In
addition to that, it optionally prints out loaded classes (both
non-anonymous and anonymous) and various classloader specific
information.
Examples:
http://cr.openjdk.java.net/~stuefe/webrevs/8203682-jcmd-print-classloader-hierarchy/example.txt
http://cr.openjdk.java.net/~stuefe/webrevs/8203682-jcmd-print-classloader-hierarchy/example-with-classes.txt
http://cr.openjdk.java.net/~stuefe/webrevs/8203682-jcmd-print-classloader-hierarchy/example-with-reflection-and-noinflation.txt
Thanks and Best Regards,
Thomas