--- old/src/share/vm/services/diagnosticCommand.hpp 2015-02-10 18:55:34.000000000 -0800 +++ new/src/share/vm/services/diagnosticCommand.hpp 2015-02-10 18:55:34.000000000 -0800 @@ -275,7 +275,7 @@ class ClassHierarchyDCmd : public DCmdWithParser { protected: DCmdArgument _print_interfaces; // true if inherited interfaces should be printed. - DCmdArgument _print_subclasses; // true subclasses of specified classname should be printed. + DCmdArgument _print_subclasses; // true if subclasses of the specified classname should be printed. DCmdArgument _classname; // Optional single class name whose hierarchy should be printed. public: ClassHierarchyDCmd(outputStream* output, bool heap); @@ -284,12 +284,17 @@ } static const char* description() { return "Print a list of all loaded classes, indented to show the class hiearchy. " - "The name of each class is followed by the Klass* of its ClassLoader, " + "The name of each class is followed by the ClassLoaderData* of its ClassLoader, " "or \"null\" if loaded by the bootstrap class loader."; } static const char* impact() { return "Medium: Depends on number of loaded classes."; } + static const JavaPermission permission() { + JavaPermission p = {"java.lang.management.ManagementPermission", + "monitor", NULL}; + return p; + } static int num_arguments(); virtual void execute(DCmdSource source, TRAPS); };