src/share/vm/services/diagnosticCommand.hpp
Print this page
*** 270,291 ****
static int num_arguments();
virtual void execute(DCmdSource source, TRAPS);
};
! class ClassHierarchyDCmd : public DCmd {
public:
! ClassHierarchyDCmd(outputStream* output, bool heap) : DCmd(output, heap) { }
static const char* name() {
return "VM.class_hierarchy";
}
static const char* description() {
! return "Print a list of all loaded classes, indented to show the class hiearchy.";
}
static const char* impact() {
return "Medium: Depends on number of loaded classes.";
}
virtual void execute(DCmdSource source, TRAPS);
};
// See also: thread_dump in attachListener.cpp
class ThreadDumpDCmd : public DCmdWithParser {
--- 270,298 ----
static int num_arguments();
virtual void execute(DCmdSource source, TRAPS);
};
! class ClassHierarchyDCmd : public DCmdWithParser {
! protected:
! DCmdArgument<bool> _print_interfaces; // true if inherited interfaces should be printed.
! DCmdArgument<bool> _print_subclasses; // true subclasses of specified classname should be printed.
! DCmdArgument<char*> _classname; // Optional single class name whose hierarchy should be printed.
public:
! ClassHierarchyDCmd(outputStream* output, bool heap);
static const char* name() {
return "VM.class_hierarchy";
}
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, "
! "or \"null\" if loaded by the bootstrap class loader.";
}
static const char* impact() {
return "Medium: Depends on number of loaded classes.";
}
+ static int num_arguments();
virtual void execute(DCmdSource source, TRAPS);
};
// See also: thread_dump in attachListener.cpp
class ThreadDumpDCmd : public DCmdWithParser {