src/share/vm/services/diagnosticCommand.hpp

changeset 3402
4f25538b54c9
parent 3329
3b688d6ff3d0
child 3478
a42c07c38c47
equal deleted inserted replaced
3383:66259eca2bf7 3402:4f25538b54c9
33 #include "runtime/os.hpp" 33 #include "runtime/os.hpp"
34 #include "services/diagnosticArgument.hpp" 34 #include "services/diagnosticArgument.hpp"
35 #include "services/diagnosticCommand.hpp" 35 #include "services/diagnosticCommand.hpp"
36 #include "services/diagnosticFramework.hpp" 36 #include "services/diagnosticFramework.hpp"
37 37
38 class HelpDCmd : public DCmd { 38 class HelpDCmd : public DCmdWithParser {
39 protected: 39 protected:
40 DCmdParser _dcmdparser;
41 DCmdArgument<bool> _all; 40 DCmdArgument<bool> _all;
42 DCmdArgument<char*> _cmd; 41 DCmdArgument<char*> _cmd;
43 public: 42 public:
44 HelpDCmd(outputStream* output, bool heap); 43 HelpDCmd(outputStream* output, bool heap);
45 static const char* name() { return "help"; } 44 static const char* name() { return "help"; }
48 "With no argument this will show a list of available commands. " 47 "With no argument this will show a list of available commands. "
49 "'help all' will show help for all commands."; 48 "'help all' will show help for all commands.";
50 } 49 }
51 static const char* impact() { return "Low: "; } 50 static const char* impact() { return "Low: "; }
52 static int num_arguments(); 51 static int num_arguments();
53 virtual void parse(CmdLine* line, char delim, TRAPS); 52 virtual void execute(TRAPS);
54 virtual void execute(TRAPS);
55 virtual void reset(TRAPS);
56 virtual void cleanup();
57 virtual void print_help(outputStream* out);
58 virtual GrowableArray<const char*>* argument_name_array();
59 virtual GrowableArray<DCmdArgumentInfo*>* argument_info_array();
60 }; 53 };
61 54
62 class VersionDCmd : public DCmd { 55 class VersionDCmd : public DCmd {
63 public: 56 public:
64 VersionDCmd(outputStream* output, bool heap) : DCmd(output,heap) { } 57 VersionDCmd(outputStream* output, bool heap) : DCmd(output,heap) { }
66 static const char* description() { 59 static const char* description() {
67 return "Print JVM version information."; 60 return "Print JVM version information.";
68 } 61 }
69 static const char* impact() { return "Low: "; } 62 static const char* impact() { return "Low: "; }
70 static int num_arguments() { return 0; } 63 static int num_arguments() { return 0; }
71 virtual void parse(CmdLine* line, char delim, TRAPS) { } 64 virtual void execute(TRAPS);
72 virtual void execute(TRAPS); 65 };
73 virtual void print_help(outputStream* out) { } 66
67 class CommandLineDCmd : public DCmd {
68 public:
69 CommandLineDCmd(outputStream* output, bool heap) : DCmd(output, heap) { }
70 static const char* name() { return "VM.command_line"; }
71 static const char* description() {
72 return "Print the command line used to start this VM instance.";
73 }
74 static const char* impact() { return "Low: "; }
75 static int num_arguments() { return 0; }
76 virtual void execute(TRAPS) {
77 Arguments::print_on(_output);
78 }
79 };
80
81 // See also: get_system_properties in attachListener.cpp
82 class PrintSystemPropertiesDCmd : public DCmd {
83 public:
84 PrintSystemPropertiesDCmd(outputStream* output, bool heap) : DCmd(output, heap) { }
85 static const char* name() { return "VM.system_properties"; }
86 static const char* description() {
87 return "Print system properties.";
88 }
89 static const char* impact() {
90 return "Low: ";
91 }
92 static int num_arguments() { return 0; }
93 virtual void execute(TRAPS);
94 };
95
96 // See also: print_flag in attachListener.cpp
97 class PrintVMFlagsDCmd : public DCmdWithParser {
98 protected:
99 DCmdArgument<bool> _all;
100 public:
101 PrintVMFlagsDCmd(outputStream* output, bool heap);
102 static const char* name() { return "VM.flags"; }
103 static const char* description() {
104 return "Print VM flag options and their current values.";
105 }
106 static const char* impact() {
107 return "Low: ";
108 }
109 static int num_arguments();
110 virtual void execute(TRAPS);
111 };
112
113 class VMUptimeDCmd : public DCmdWithParser {
114 protected:
115 DCmdArgument<bool> _date;
116 public:
117 VMUptimeDCmd(outputStream* output, bool heap);
118 static const char* name() { return "VM.uptime"; }
119 static const char* description() {
120 return "Print VM uptime.";
121 }
122 static const char* impact() {
123 return "Low: ";
124 }
125 static int num_arguments();
126 virtual void execute(TRAPS);
127 };
128
129 class SystemGCDCmd : public DCmd {
130 public:
131 SystemGCDCmd(outputStream* output, bool heap) : DCmd(output, heap) { }
132 static const char* name() { return "GC.run"; }
133 static const char* description() {
134 return "Call java.lang.System.gc().";
135 }
136 static const char* impact() {
137 return "Medium: Depends on Java heap size and content.";
138 }
139 static int num_arguments() { return 0; }
140 virtual void execute(TRAPS);
141 };
142
143 class RunFinalizationDCmd : public DCmd {
144 public:
145 RunFinalizationDCmd(outputStream* output, bool heap) : DCmd(output, heap) { }
146 static const char* name() { return "GC.run_finalization"; }
147 static const char* description() {
148 return "Call java.lang.System.runFinalization().";
149 }
150 static const char* impact() {
151 return "Medium: Depends on Java content.";
152 }
153 static int num_arguments() { return 0; }
154 virtual void execute(TRAPS);
155 };
156
157 #ifndef SERVICES_KERNEL // Heap dumping not supported
158 // See also: dump_heap in attachListener.cpp
159 class HeapDumpDCmd : public DCmdWithParser {
160 protected:
161 DCmdArgument<char*> _filename;
162 DCmdArgument<bool> _all;
163 public:
164 HeapDumpDCmd(outputStream* output, bool heap);
165 static const char* name() {
166 return "GC.heap_dump";
167 }
168 static const char* description() {
169 return "Generate a HPROF format dump of the Java heap.";
170 }
171 static const char* impact() {
172 return "High: Depends on Java heap size and content. "
173 "Request a full GC unless the '-all' option is specified.";
174 }
175 static int num_arguments();
176 virtual void execute(TRAPS);
177 };
178 #endif // SERVICES_KERNEL
179
180 // See also: inspeactheap in attachListener.cpp
181 class ClassHistogramDCmd : public DCmdWithParser {
182 protected:
183 DCmdArgument<bool> _all;
184 public:
185 ClassHistogramDCmd(outputStream* output, bool heap);
186 static const char* name() {
187 return "GC.class_histogram";
188 }
189 static const char* description() {
190 return "Provide statistics about the Java heap usage.";
191 }
192 static const char* impact() {
193 return "High: Depends on Java heap size and content.";
194 }
195 static int num_arguments();
196 virtual void execute(TRAPS);
197 };
198
199 // See also: thread_dump in attachListener.cpp
200 class ThreadDumpDCmd : public DCmdWithParser {
201 protected:
202 DCmdArgument<bool> _locks;
203 public:
204 ThreadDumpDCmd(outputStream* output, bool heap);
205 static const char* name() { return "Thread.print"; }
206 static const char* description() {
207 return "Print all threads with stacktraces.";
208 }
209 static const char* impact() {
210 return "Medium: Depends on the number of threads.";
211 }
212 static int num_arguments();
213 virtual void execute(TRAPS);
74 }; 214 };
75 215
76 #endif // SHARE_VM_SERVICES_DIAGNOSTICCOMMAND_HPP 216 #endif // SHARE_VM_SERVICES_DIAGNOSTICCOMMAND_HPP

mercurial