annotate src/share/vm/services/diagnosticCommand.hpp @ 8733:9def4075da6d

8008079: G1: Add nextObject routine to CMBitMapRO and replace nextWord Summary: Update the task local finger to the start of the next object when marking aborts, in order to avoid the redundant scanning of all 0's when the marking task restarts, if otherwise updating to the next word. In addition, reuse the routine nextObject() in routine iterate(). Reviewed-by: johnc, ysr Contributed-by: tamao <tao.mao@oracle.com>
author tamao
date Tue, 05 Mar 2013 15:36:56 -0800
parents 3c9bc17b9403
children 31a4e55f8c9d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4133
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
1 /*
7956
16fb9f942703 6479360: PrintClassHistogram improvements
acorn
parents: 6854
diff changeset
2 * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
4133
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
4 *
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
7 * published by the Free Software Foundation.
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
8 *
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
13 * accompanied this code).
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
14 *
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
18 *
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
21 * questions.
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
22 *
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
23 */
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
24
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
25 #ifndef SHARE_VM_SERVICES_DIAGNOSTICCOMMAND_HPP
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
26 #define SHARE_VM_SERVICES_DIAGNOSTICCOMMAND_HPP
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
27
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
28 #include "runtime/arguments.hpp"
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
29 #include "classfile/vmSymbols.hpp"
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
30 #include "utilities/ostream.hpp"
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
31 #include "runtime/vm_version.hpp"
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
32 #include "runtime/vmThread.hpp"
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
33 #include "runtime/os.hpp"
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
34 #include "services/diagnosticArgument.hpp"
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
35 #include "services/diagnosticCommand.hpp"
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
36 #include "services/diagnosticFramework.hpp"
4851
a42c07c38c47 7132515: Add dcmd to manage UnlockingCommercialFeature flag
dsamersoff
parents: 4773
diff changeset
37 #include "services/diagnosticCommand_ext.hpp"
8001
db9981fd3124 8005915: Unify SERIALGC and INCLUDE_ALTERNATE_GCS
jprovino
parents: 6854
diff changeset
38 #include "utilities/macros.hpp"
4133
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
39
4773
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
40 class HelpDCmd : public DCmdWithParser {
4133
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
41 protected:
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
42 DCmdArgument<bool> _all;
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
43 DCmdArgument<char*> _cmd;
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
44 public:
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
45 HelpDCmd(outputStream* output, bool heap);
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
46 static const char* name() { return "help"; }
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
47 static const char* description() {
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
48 return "For more information about a specific command use 'help <command>'. "
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
49 "With no argument this will show a list of available commands. "
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
50 "'help all' will show help for all commands.";
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
51 }
6202
5a1f452f8f90 7178703: Fix handling of quoted arguments and better error messages in dcmd
sla
parents: 5895
diff changeset
52 static const char* impact() { return "Low"; }
4133
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
53 static int num_arguments();
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
54 virtual void execute(TRAPS);
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
55 };
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
56
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
57 class VersionDCmd : public DCmd {
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
58 public:
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
59 VersionDCmd(outputStream* output, bool heap) : DCmd(output,heap) { }
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
60 static const char* name() { return "VM.version"; }
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
61 static const char* description() {
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
62 return "Print JVM version information.";
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
63 }
6202
5a1f452f8f90 7178703: Fix handling of quoted arguments and better error messages in dcmd
sla
parents: 5895
diff changeset
64 static const char* impact() { return "Low"; }
4133
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
65 static int num_arguments() { return 0; }
4773
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
66 virtual void execute(TRAPS);
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
67 };
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
68
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
69 class CommandLineDCmd : public DCmd {
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
70 public:
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
71 CommandLineDCmd(outputStream* output, bool heap) : DCmd(output, heap) { }
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
72 static const char* name() { return "VM.command_line"; }
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
73 static const char* description() {
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
74 return "Print the command line used to start this VM instance.";
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
75 }
6202
5a1f452f8f90 7178703: Fix handling of quoted arguments and better error messages in dcmd
sla
parents: 5895
diff changeset
76 static const char* impact() { return "Low"; }
4773
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
77 static int num_arguments() { return 0; }
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
78 virtual void execute(TRAPS) {
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
79 Arguments::print_on(_output);
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
80 }
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
81 };
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
82
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
83 // See also: get_system_properties in attachListener.cpp
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
84 class PrintSystemPropertiesDCmd : public DCmd {
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
85 public:
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
86 PrintSystemPropertiesDCmd(outputStream* output, bool heap) : DCmd(output, heap) { }
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
87 static const char* name() { return "VM.system_properties"; }
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
88 static const char* description() {
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
89 return "Print system properties.";
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
90 }
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
91 static const char* impact() {
6202
5a1f452f8f90 7178703: Fix handling of quoted arguments and better error messages in dcmd
sla
parents: 5895
diff changeset
92 return "Low";
4773
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
93 }
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
94 static int num_arguments() { return 0; }
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
95 virtual void execute(TRAPS);
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
96 };
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
97
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
98 // See also: print_flag in attachListener.cpp
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
99 class PrintVMFlagsDCmd : public DCmdWithParser {
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
100 protected:
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
101 DCmdArgument<bool> _all;
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
102 public:
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
103 PrintVMFlagsDCmd(outputStream* output, bool heap);
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
104 static const char* name() { return "VM.flags"; }
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
105 static const char* description() {
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
106 return "Print VM flag options and their current values.";
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
107 }
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
108 static const char* impact() {
6202
5a1f452f8f90 7178703: Fix handling of quoted arguments and better error messages in dcmd
sla
parents: 5895
diff changeset
109 return "Low";
4773
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
110 }
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
111 static int num_arguments();
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
112 virtual void execute(TRAPS);
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
113 };
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
114
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
115 class VMUptimeDCmd : public DCmdWithParser {
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
116 protected:
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
117 DCmdArgument<bool> _date;
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
118 public:
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
119 VMUptimeDCmd(outputStream* output, bool heap);
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
120 static const char* name() { return "VM.uptime"; }
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
121 static const char* description() {
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
122 return "Print VM uptime.";
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
123 }
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
124 static const char* impact() {
6202
5a1f452f8f90 7178703: Fix handling of quoted arguments and better error messages in dcmd
sla
parents: 5895
diff changeset
125 return "Low";
4773
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
126 }
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
127 static int num_arguments();
4133
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
128 virtual void execute(TRAPS);
4773
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
129 };
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
130
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
131 class SystemGCDCmd : public DCmd {
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
132 public:
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
133 SystemGCDCmd(outputStream* output, bool heap) : DCmd(output, heap) { }
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
134 static const char* name() { return "GC.run"; }
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
135 static const char* description() {
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
136 return "Call java.lang.System.gc().";
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
137 }
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
138 static const char* impact() {
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
139 return "Medium: Depends on Java heap size and content.";
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
140 }
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
141 static int num_arguments() { return 0; }
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
142 virtual void execute(TRAPS);
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
143 };
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
144
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
145 class RunFinalizationDCmd : public DCmd {
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
146 public:
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
147 RunFinalizationDCmd(outputStream* output, bool heap) : DCmd(output, heap) { }
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
148 static const char* name() { return "GC.run_finalization"; }
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
149 static const char* description() {
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
150 return "Call java.lang.System.runFinalization().";
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
151 }
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
152 static const char* impact() {
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
153 return "Medium: Depends on Java content.";
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
154 }
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
155 static int num_arguments() { return 0; }
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
156 virtual void execute(TRAPS);
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
157 };
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
158
6854
fb19af007ffc 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 6202
diff changeset
159 #if INCLUDE_SERVICES // Heap dumping supported
4773
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
160 // See also: dump_heap in attachListener.cpp
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
161 class HeapDumpDCmd : public DCmdWithParser {
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
162 protected:
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
163 DCmdArgument<char*> _filename;
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
164 DCmdArgument<bool> _all;
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
165 public:
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
166 HeapDumpDCmd(outputStream* output, bool heap);
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
167 static const char* name() {
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
168 return "GC.heap_dump";
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
169 }
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
170 static const char* description() {
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
171 return "Generate a HPROF format dump of the Java heap.";
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
172 }
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
173 static const char* impact() {
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
174 return "High: Depends on Java heap size and content. "
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
175 "Request a full GC unless the '-all' option is specified.";
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
176 }
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
177 static int num_arguments();
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
178 virtual void execute(TRAPS);
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
179 };
6854
fb19af007ffc 7189254: Change makefiles for more flexibility to override defaults
jprovino
parents: 6202
diff changeset
180 #endif // INCLUDE_SERVICES
4773
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
181
7956
16fb9f942703 6479360: PrintClassHistogram improvements
acorn
parents: 6854
diff changeset
182 // See also: inspectheap in attachListener.cpp
4773
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
183 class ClassHistogramDCmd : public DCmdWithParser {
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
184 protected:
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
185 DCmdArgument<bool> _all;
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
186 public:
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
187 ClassHistogramDCmd(outputStream* output, bool heap);
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
188 static const char* name() {
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
189 return "GC.class_histogram";
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
190 }
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
191 static const char* description() {
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
192 return "Provide statistics about the Java heap usage.";
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
193 }
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
194 static const char* impact() {
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
195 return "High: Depends on Java heap size and content.";
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
196 }
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
197 static int num_arguments();
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
198 virtual void execute(TRAPS);
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
199 };
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
200
7956
16fb9f942703 6479360: PrintClassHistogram improvements
acorn
parents: 6854
diff changeset
201 class ClassStatsDCmd : public DCmdWithParser {
16fb9f942703 6479360: PrintClassHistogram improvements
acorn
parents: 6854
diff changeset
202 protected:
16fb9f942703 6479360: PrintClassHistogram improvements
acorn
parents: 6854
diff changeset
203 DCmdArgument<bool> _all;
16fb9f942703 6479360: PrintClassHistogram improvements
acorn
parents: 6854
diff changeset
204 DCmdArgument<bool> _csv;
16fb9f942703 6479360: PrintClassHistogram improvements
acorn
parents: 6854
diff changeset
205 DCmdArgument<bool> _help;
16fb9f942703 6479360: PrintClassHistogram improvements
acorn
parents: 6854
diff changeset
206 DCmdArgument<char*> _columns;
16fb9f942703 6479360: PrintClassHistogram improvements
acorn
parents: 6854
diff changeset
207 public:
16fb9f942703 6479360: PrintClassHistogram improvements
acorn
parents: 6854
diff changeset
208 ClassStatsDCmd(outputStream* output, bool heap);
16fb9f942703 6479360: PrintClassHistogram improvements
acorn
parents: 6854
diff changeset
209 static const char* name() {
16fb9f942703 6479360: PrintClassHistogram improvements
acorn
parents: 6854
diff changeset
210 return "GC.class_stats";
16fb9f942703 6479360: PrintClassHistogram improvements
acorn
parents: 6854
diff changeset
211 }
16fb9f942703 6479360: PrintClassHistogram improvements
acorn
parents: 6854
diff changeset
212 static const char* description() {
16fb9f942703 6479360: PrintClassHistogram improvements
acorn
parents: 6854
diff changeset
213 return "Provide statistics about Java class meta data. Requires -XX:+UnlockDiagnosticVMOptions.";
16fb9f942703 6479360: PrintClassHistogram improvements
acorn
parents: 6854
diff changeset
214 }
16fb9f942703 6479360: PrintClassHistogram improvements
acorn
parents: 6854
diff changeset
215 static const char* impact() {
16fb9f942703 6479360: PrintClassHistogram improvements
acorn
parents: 6854
diff changeset
216 return "High: Depends on Java heap size and content.";
16fb9f942703 6479360: PrintClassHistogram improvements
acorn
parents: 6854
diff changeset
217 }
16fb9f942703 6479360: PrintClassHistogram improvements
acorn
parents: 6854
diff changeset
218 static int num_arguments();
16fb9f942703 6479360: PrintClassHistogram improvements
acorn
parents: 6854
diff changeset
219 virtual void execute(TRAPS);
16fb9f942703 6479360: PrintClassHistogram improvements
acorn
parents: 6854
diff changeset
220 };
16fb9f942703 6479360: PrintClassHistogram improvements
acorn
parents: 6854
diff changeset
221
4773
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
222 // See also: thread_dump in attachListener.cpp
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
223 class ThreadDumpDCmd : public DCmdWithParser {
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
224 protected:
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
225 DCmdArgument<bool> _locks;
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
226 public:
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
227 ThreadDumpDCmd(outputStream* output, bool heap);
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
228 static const char* name() { return "Thread.print"; }
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
229 static const char* description() {
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
230 return "Print all threads with stacktraces.";
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
231 }
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
232 static const char* impact() {
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
233 return "Medium: Depends on the number of threads.";
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
234 }
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
235 static int num_arguments();
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4133
diff changeset
236 virtual void execute(TRAPS);
4133
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
237 };
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
238
5895
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
239 // Enhanced JMX Agent support
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
240
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
241 class JMXStartRemoteDCmd : public DCmdWithParser {
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
242
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
243 // Explicitly list all properties that could be
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
244 // passed to Agent.startRemoteManagementAgent()
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
245 // com.sun.management is omitted
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
246
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
247 DCmdArgument<char *> _config_file;
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
248 DCmdArgument<char *> _jmxremote_port;
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
249 DCmdArgument<char *> _jmxremote_rmi_port;
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
250 DCmdArgument<char *> _jmxremote_ssl;
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
251 DCmdArgument<char *> _jmxremote_registry_ssl;
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
252 DCmdArgument<char *> _jmxremote_authenticate;
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
253 DCmdArgument<char *> _jmxremote_password_file;
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
254 DCmdArgument<char *> _jmxremote_access_file;
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
255 DCmdArgument<char *> _jmxremote_login_config;
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
256 DCmdArgument<char *> _jmxremote_ssl_enabled_cipher_suites;
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
257 DCmdArgument<char *> _jmxremote_ssl_enabled_protocols;
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
258 DCmdArgument<char *> _jmxremote_ssl_need_client_auth;
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
259 DCmdArgument<char *> _jmxremote_ssl_config_file;
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
260
7979
8f696cf1a0fb 8002048: Protocol to discovery of manageable Java processes on a network
dsamersoff
parents: 7956
diff changeset
261 // JDP support
8f696cf1a0fb 8002048: Protocol to discovery of manageable Java processes on a network
dsamersoff
parents: 7956
diff changeset
262 // Keep autodiscovery char* not bool to pass true/false
8f696cf1a0fb 8002048: Protocol to discovery of manageable Java processes on a network
dsamersoff
parents: 7956
diff changeset
263 // as property value to java level.
8f696cf1a0fb 8002048: Protocol to discovery of manageable Java processes on a network
dsamersoff
parents: 7956
diff changeset
264 DCmdArgument<char *> _jmxremote_autodiscovery;
8f696cf1a0fb 8002048: Protocol to discovery of manageable Java processes on a network
dsamersoff
parents: 7956
diff changeset
265 DCmdArgument<jlong> _jdp_port;
8f696cf1a0fb 8002048: Protocol to discovery of manageable Java processes on a network
dsamersoff
parents: 7956
diff changeset
266 DCmdArgument<char *> _jdp_address;
8f696cf1a0fb 8002048: Protocol to discovery of manageable Java processes on a network
dsamersoff
parents: 7956
diff changeset
267 DCmdArgument<char *> _jdp_source_addr;
8f696cf1a0fb 8002048: Protocol to discovery of manageable Java processes on a network
dsamersoff
parents: 7956
diff changeset
268 DCmdArgument<jlong> _jdp_ttl;
8f696cf1a0fb 8002048: Protocol to discovery of manageable Java processes on a network
dsamersoff
parents: 7956
diff changeset
269 DCmdArgument<jlong> _jdp_pause;
8f696cf1a0fb 8002048: Protocol to discovery of manageable Java processes on a network
dsamersoff
parents: 7956
diff changeset
270
5895
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
271 public:
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
272 JMXStartRemoteDCmd(outputStream *output, bool heap_allocated);
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
273
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
274 static const char *name() {
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
275 return "ManagementAgent.start";
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
276 }
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
277
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
278 static const char *description() {
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
279 return "Start remote management agent.";
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
280 }
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
281
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
282 static int num_arguments();
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
283
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
284 virtual void execute(TRAPS);
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
285
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
286 };
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
287
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
288 class JMXStartLocalDCmd : public DCmd {
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
289
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
290 // Explicitly request start of local agent,
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
291 // it will not be started by start dcmd
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
292
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
293
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
294 public:
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
295 JMXStartLocalDCmd(outputStream *output, bool heap_allocated);
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
296
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
297 static const char *name() {
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
298 return "ManagementAgent.start_local";
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
299 }
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
300
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
301 static const char *description() {
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
302 return "Start local management agent.";
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
303 }
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
304
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
305 virtual void execute(TRAPS);
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
306
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
307 };
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
308
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
309 class JMXStopRemoteDCmd : public DCmd {
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
310 public:
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
311 JMXStopRemoteDCmd(outputStream *output, bool heap_allocated) :
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
312 DCmd(output, heap_allocated) {
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
313 // Do Nothing
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
314 }
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
315
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
316 static const char *name() {
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
317 return "ManagementAgent.stop";
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
318 }
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
319
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
320 static const char *description() {
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
321 return "Stop remote management agent.";
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
322 }
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
323
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
324 virtual void execute(TRAPS);
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
325 };
645162d94294 7110104: It should be possible to stop and start JMX Agent at runtime
dsamersoff
parents: 4851
diff changeset
326
4133
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents:
diff changeset
327 #endif // SHARE_VM_SERVICES_DIAGNOSTICCOMMAND_HPP