Mercurial > hg > graal-jvmci-8
comparison src/share/vm/services/diagnosticCommand.hpp @ 4773:4f25538b54c9
7120511: Add diagnostic commands
Reviewed-by: acorn, phh, dcubed, sspitsyn
author | fparain |
---|---|
date | Mon, 09 Jan 2012 10:27:24 +0100 |
parents | 3b688d6ff3d0 |
children | a42c07c38c47 |
comparison
equal
deleted
inserted
replaced
4754:66259eca2bf7 | 4773: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 |