mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 23:04:50 +02:00
8023093: Add ManagementAgent.status diagnostic command
Reviewed-by: sla
This commit is contained in:
parent
d350f07d51
commit
c8b0b0b85c
3 changed files with 57 additions and 0 deletions
|
@ -559,6 +559,7 @@
|
|||
template(startRemoteAgent_name, "startRemoteManagementAgent") \
|
||||
template(startLocalAgent_name, "startLocalManagementAgent") \
|
||||
template(stopRemoteAgent_name, "stopRemoteManagementAgent") \
|
||||
template(getAgentStatus_name, "getManagementAgentStatus") \
|
||||
template(java_lang_management_ThreadInfo_constructor_signature, "(Ljava/lang/Thread;ILjava/lang/Object;Ljava/lang/Thread;JJJJ[Ljava/lang/StackTraceElement;)V") \
|
||||
template(java_lang_management_ThreadInfo_with_locks_constructor_signature, "(Ljava/lang/Thread;ILjava/lang/Object;Ljava/lang/Thread;JJJJ[Ljava/lang/StackTraceElement;[Ljava/lang/Object;[I[Ljava/lang/Object;)V") \
|
||||
template(long_long_long_long_void_signature, "(JJJJ)V") \
|
||||
|
|
|
@ -81,6 +81,7 @@ void DCmdRegistrant::register_dcmds(){
|
|||
DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<JMXStartRemoteDCmd>(jmx_agent_export_flags, true,false));
|
||||
DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<JMXStartLocalDCmd>(jmx_agent_export_flags, true,false));
|
||||
DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<JMXStopRemoteDCmd>(jmx_agent_export_flags, true,false));
|
||||
DCmdFactory::register_DCmdFactory(new DCmdFactoryImpl<JMXStatusDCmd>(jmx_agent_export_flags, true,false));
|
||||
|
||||
}
|
||||
|
||||
|
@ -708,6 +709,38 @@ void JMXStopRemoteDCmd::execute(DCmdSource source, TRAPS) {
|
|||
JavaCalls::call_static(&result, ik, vmSymbols::stopRemoteAgent_name(), vmSymbols::void_method_signature(), CHECK);
|
||||
}
|
||||
|
||||
JMXStatusDCmd::JMXStatusDCmd(outputStream *output, bool heap_allocated) :
|
||||
DCmd(output, heap_allocated) {
|
||||
// do nothing
|
||||
}
|
||||
|
||||
void JMXStatusDCmd::execute(DCmdSource source, TRAPS) {
|
||||
ResourceMark rm(THREAD);
|
||||
HandleMark hm(THREAD);
|
||||
|
||||
// Load and initialize the sun.management.Agent class
|
||||
// invoke getManagementAgentStatus() method to generate the status info
|
||||
// throw java.lang.NoSuchMethodError if method doesn't exist
|
||||
|
||||
Handle loader = Handle(THREAD, SystemDictionary::java_system_loader());
|
||||
Klass* k = SystemDictionary::resolve_or_fail(vmSymbols::sun_management_Agent(), loader, Handle(), true, CHECK);
|
||||
instanceKlassHandle ik (THREAD, k);
|
||||
|
||||
JavaValue result(T_OBJECT);
|
||||
JavaCalls::call_static(&result, ik, vmSymbols::getAgentStatus_name(), vmSymbols::void_string_signature(), CHECK);
|
||||
|
||||
jvalue* jv = (jvalue*) result.get_value_addr();
|
||||
oop str = (oop) jv->l;
|
||||
if (str != NULL) {
|
||||
char* out = java_lang_String::as_utf8_string(str);
|
||||
if (out) {
|
||||
output()->print_cr("%s", out);
|
||||
return;
|
||||
}
|
||||
}
|
||||
output()->print_cr("Error obtaining management agent status");
|
||||
}
|
||||
|
||||
VMDynamicLibrariesDCmd::VMDynamicLibrariesDCmd(outputStream *output, bool heap_allocated) :
|
||||
DCmd(output, heap_allocated) {
|
||||
// do nothing
|
||||
|
|
|
@ -452,6 +452,29 @@ public:
|
|||
virtual void execute(DCmdSource source, TRAPS);
|
||||
};
|
||||
|
||||
// Print the JMX system status
|
||||
class JMXStatusDCmd : public DCmd {
|
||||
public:
|
||||
JMXStatusDCmd(outputStream *output, bool heap_allocated);
|
||||
|
||||
static const char *name() {
|
||||
return "ManagementAgent.status";
|
||||
}
|
||||
|
||||
static const char *description() {
|
||||
return "Print the management agent status.";
|
||||
}
|
||||
|
||||
static const JavaPermission permission() {
|
||||
JavaPermission p = {"java.lang.management.ManagementPermission",
|
||||
"monitor", NULL};
|
||||
return p;
|
||||
}
|
||||
|
||||
virtual void execute(DCmdSource source, TRAPS);
|
||||
|
||||
};
|
||||
|
||||
class RotateGCLogDCmd : public DCmd {
|
||||
public:
|
||||
RotateGCLogDCmd(outputStream* output, bool heap) : DCmd(output, heap) {}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue