src/share/vm/services/diagnosticCommand.hpp

changeset 3402
4f25538b54c9
parent 3329
3b688d6ff3d0
child 3478
a42c07c38c47
     1.1 --- a/src/share/vm/services/diagnosticCommand.hpp	Thu Jan 05 17:16:13 2012 -0500
     1.2 +++ b/src/share/vm/services/diagnosticCommand.hpp	Mon Jan 09 10:27:24 2012 +0100
     1.3 @@ -35,9 +35,8 @@
     1.4  #include "services/diagnosticCommand.hpp"
     1.5  #include "services/diagnosticFramework.hpp"
     1.6  
     1.7 -class HelpDCmd : public DCmd {
     1.8 +class HelpDCmd : public DCmdWithParser {
     1.9  protected:
    1.10 -  DCmdParser _dcmdparser;
    1.11    DCmdArgument<bool> _all;
    1.12    DCmdArgument<char*> _cmd;
    1.13  public:
    1.14 @@ -50,13 +49,7 @@
    1.15    }
    1.16    static const char* impact() { return "Low: "; }
    1.17    static int num_arguments();
    1.18 -  virtual void parse(CmdLine* line, char delim, TRAPS);
    1.19    virtual void execute(TRAPS);
    1.20 -  virtual void reset(TRAPS);
    1.21 -  virtual void cleanup();
    1.22 -  virtual void print_help(outputStream* out);
    1.23 -  virtual GrowableArray<const char*>* argument_name_array();
    1.24 -  virtual GrowableArray<DCmdArgumentInfo*>* argument_info_array();
    1.25  };
    1.26  
    1.27  class VersionDCmd : public DCmd {
    1.28 @@ -68,9 +61,156 @@
    1.29    }
    1.30    static const char* impact() { return "Low: "; }
    1.31    static int num_arguments() { return 0; }
    1.32 -  virtual void parse(CmdLine* line, char delim, TRAPS) { }
    1.33    virtual void execute(TRAPS);
    1.34 -  virtual void print_help(outputStream* out) { }
    1.35 +};
    1.36 +
    1.37 +class CommandLineDCmd : public DCmd {
    1.38 +public:
    1.39 +  CommandLineDCmd(outputStream* output, bool heap) : DCmd(output, heap) { }
    1.40 +  static const char* name() { return "VM.command_line"; }
    1.41 +  static const char* description() {
    1.42 +    return "Print the command line used to start this VM instance.";
    1.43 +  }
    1.44 +  static const char* impact() { return "Low: "; }
    1.45 +  static int num_arguments() { return 0; }
    1.46 +  virtual void execute(TRAPS) {
    1.47 +    Arguments::print_on(_output);
    1.48 +  }
    1.49 +};
    1.50 +
    1.51 +// See also: get_system_properties in attachListener.cpp
    1.52 +class PrintSystemPropertiesDCmd : public DCmd {
    1.53 +public:
    1.54 +  PrintSystemPropertiesDCmd(outputStream* output, bool heap) : DCmd(output, heap) { }
    1.55 +    static const char* name() { return "VM.system_properties"; }
    1.56 +    static const char* description() {
    1.57 +      return "Print system properties.";
    1.58 +    }
    1.59 +    static const char* impact() {
    1.60 +      return "Low: ";
    1.61 +    }
    1.62 +    static int num_arguments() { return 0; }
    1.63 +    virtual void execute(TRAPS);
    1.64 +};
    1.65 +
    1.66 +// See also: print_flag in attachListener.cpp
    1.67 +class PrintVMFlagsDCmd : public DCmdWithParser {
    1.68 +protected:
    1.69 +  DCmdArgument<bool> _all;
    1.70 +public:
    1.71 +  PrintVMFlagsDCmd(outputStream* output, bool heap);
    1.72 +  static const char* name() { return "VM.flags"; }
    1.73 +  static const char* description() {
    1.74 +    return "Print VM flag options and their current values.";
    1.75 +  }
    1.76 +  static const char* impact() {
    1.77 +    return "Low: ";
    1.78 +  }
    1.79 +  static int num_arguments();
    1.80 +  virtual void execute(TRAPS);
    1.81 +};
    1.82 +
    1.83 +class VMUptimeDCmd : public DCmdWithParser {
    1.84 +protected:
    1.85 +  DCmdArgument<bool> _date;
    1.86 +public:
    1.87 +  VMUptimeDCmd(outputStream* output, bool heap);
    1.88 +  static const char* name() { return "VM.uptime"; }
    1.89 +  static const char* description() {
    1.90 +    return "Print VM uptime.";
    1.91 +  }
    1.92 +  static const char* impact() {
    1.93 +    return "Low: ";
    1.94 +  }
    1.95 +  static int num_arguments();
    1.96 +  virtual void execute(TRAPS);
    1.97 +};
    1.98 +
    1.99 +class SystemGCDCmd : public DCmd {
   1.100 +public:
   1.101 +  SystemGCDCmd(outputStream* output, bool heap) : DCmd(output, heap) { }
   1.102 +    static const char* name() { return "GC.run"; }
   1.103 +    static const char* description() {
   1.104 +      return "Call java.lang.System.gc().";
   1.105 +    }
   1.106 +    static const char* impact() {
   1.107 +      return "Medium: Depends on Java heap size and content.";
   1.108 +    }
   1.109 +    static int num_arguments() { return 0; }
   1.110 +    virtual void execute(TRAPS);
   1.111 +};
   1.112 +
   1.113 +class RunFinalizationDCmd : public DCmd {
   1.114 +public:
   1.115 +  RunFinalizationDCmd(outputStream* output, bool heap) : DCmd(output, heap) { }
   1.116 +    static const char* name() { return "GC.run_finalization"; }
   1.117 +    static const char* description() {
   1.118 +      return "Call java.lang.System.runFinalization().";
   1.119 +    }
   1.120 +    static const char* impact() {
   1.121 +      return "Medium: Depends on Java content.";
   1.122 +    }
   1.123 +    static int num_arguments() { return 0; }
   1.124 +    virtual void execute(TRAPS);
   1.125 +};
   1.126 +
   1.127 +#ifndef SERVICES_KERNEL   // Heap dumping not supported
   1.128 +// See also: dump_heap in attachListener.cpp
   1.129 +class HeapDumpDCmd : public DCmdWithParser {
   1.130 +protected:
   1.131 +  DCmdArgument<char*> _filename;
   1.132 +  DCmdArgument<bool>  _all;
   1.133 +public:
   1.134 +  HeapDumpDCmd(outputStream* output, bool heap);
   1.135 +  static const char* name() {
   1.136 +    return "GC.heap_dump";
   1.137 +  }
   1.138 +  static const char* description() {
   1.139 +    return "Generate a HPROF format dump of the Java heap.";
   1.140 +  }
   1.141 +  static const char* impact() {
   1.142 +    return "High: Depends on Java heap size and content. "
   1.143 +           "Request a full GC unless the '-all' option is specified.";
   1.144 +  }
   1.145 +  static int num_arguments();
   1.146 +  virtual void execute(TRAPS);
   1.147 +};
   1.148 +#endif // SERVICES_KERNEL
   1.149 +
   1.150 +// See also: inspeactheap in attachListener.cpp
   1.151 +class ClassHistogramDCmd : public DCmdWithParser {
   1.152 +protected:
   1.153 +  DCmdArgument<bool> _all;
   1.154 +public:
   1.155 +  ClassHistogramDCmd(outputStream* output, bool heap);
   1.156 +  static const char* name() {
   1.157 +    return "GC.class_histogram";
   1.158 +  }
   1.159 +  static const char* description() {
   1.160 +    return "Provide statistics about the Java heap usage.";
   1.161 +  }
   1.162 +  static const char* impact() {
   1.163 +    return "High: Depends on Java heap size and content.";
   1.164 +  }
   1.165 +  static int num_arguments();
   1.166 +  virtual void execute(TRAPS);
   1.167 +};
   1.168 +
   1.169 +// See also: thread_dump in attachListener.cpp
   1.170 +class ThreadDumpDCmd : public DCmdWithParser {
   1.171 +protected:
   1.172 +  DCmdArgument<bool> _locks;
   1.173 +public:
   1.174 +  ThreadDumpDCmd(outputStream* output, bool heap);
   1.175 +  static const char* name() { return "Thread.print"; }
   1.176 +  static const char* description() {
   1.177 +    return "Print all threads with stacktraces.";
   1.178 +  }
   1.179 +  static const char* impact() {
   1.180 +    return "Medium: Depends on the number of threads.";
   1.181 +  }
   1.182 +  static int num_arguments();
   1.183 +  virtual void execute(TRAPS);
   1.184  };
   1.185  
   1.186  #endif // SHARE_VM_SERVICES_DIAGNOSTICCOMMAND_HPP

mercurial