< prev index next >
jdk/src/java.management/share/classes/sun/management/ManagementFactoryHelper.java
Print this page
@@ -1,7 +1,7 @@
/*
- * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
@@ -24,46 +24,49 @@
*/
package sun.management;
import java.lang.management.*;
-
-import javax.management.DynamicMBean;
import javax.management.InstanceAlreadyExistsException;
import javax.management.InstanceNotFoundException;
import javax.management.MBeanServer;
import javax.management.MBeanRegistrationException;
import javax.management.NotCompliantMBeanException;
import javax.management.ObjectName;
import javax.management.RuntimeOperationsException;
import java.security.AccessController;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
-
import sun.util.logging.LoggingSupport;
-
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
-import com.sun.management.DiagnosticCommandMBean;
-import com.sun.management.HotSpotDiagnosticMXBean;
/**
* ManagementFactoryHelper provides static factory methods to create
* instances of the management interface.
*/
public class ManagementFactoryHelper {
+ static {
+ // make sure that the management lib is loaded within
+ // java.lang.management.ManagementFactory
+ sun.misc.Unsafe.getUnsafe().ensureClassInitialized(ManagementFactory.class);
+ }
+
+ private static final VMManagement jvm = new VMManagementImpl();
+
private ManagementFactoryHelper() {};
- private static VMManagement jvm;
+ public static VMManagement getVMManagement() {
+ return jvm;
+ }
private static ClassLoadingImpl classMBean = null;
private static MemoryImpl memoryMBean = null;
private static ThreadImpl threadMBean = null;
private static RuntimeImpl runtimeMBean = null;
private static CompilationImpl compileMBean = null;
- private static OperatingSystemImpl osMBean = null;
+ private static BaseOperatingSystemImpl osMBean = null;
public static synchronized ClassLoadingMXBean getClassLoadingMXBean() {
if (classMBean == null) {
classMBean = new ClassLoadingImpl(jvm);
}
@@ -98,11 +101,11 @@
return compileMBean;
}
public static synchronized OperatingSystemMXBean getOperatingSystemMXBean() {
if (osMBean == null) {
- osMBean = new OperatingSystemImpl(jvm);
+ osMBean = new BaseOperatingSystemImpl(jvm);
}
return osMBean;
}
public static List<MemoryPoolMXBean> getMemoryPoolMXBeans() {
@@ -255,24 +258,15 @@
return pool.getMemoryUsed();
}
};
}
- private static HotSpotDiagnostic hsDiagMBean = null;
private static HotspotRuntime hsRuntimeMBean = null;
private static HotspotClassLoading hsClassMBean = null;
private static HotspotThread hsThreadMBean = null;
private static HotspotCompilation hsCompileMBean = null;
private static HotspotMemory hsMemoryMBean = null;
- private static DiagnosticCommandImpl hsDiagCommandMBean = null;
-
- public static synchronized HotSpotDiagnosticMXBean getDiagnosticMXBean() {
- if (hsDiagMBean == null) {
- hsDiagMBean = new HotSpotDiagnostic();
- }
- return hsDiagMBean;
- }
/**
* This method is for testing only.
*/
public static synchronized HotspotRuntimeMBean getHotspotRuntimeMBean() {
@@ -310,18 +304,10 @@
hsMemoryMBean = new HotspotMemory(jvm);
}
return hsMemoryMBean;
}
- public static synchronized DiagnosticCommandMBean getDiagnosticCommandMBean() {
- // Remote Diagnostic Commands may not be supported
- if (hsDiagCommandMBean == null && jvm.isRemoteDiagnosticCommandsSupported()) {
- hsDiagCommandMBean = new DiagnosticCommandImpl(jvm);
- }
- return hsDiagCommandMBean;
- }
-
/**
* This method is for testing only.
*/
public static synchronized HotspotCompilationMBean getHotspotCompilationMBean() {
if (hsCompileMBean == null) {
@@ -372,22 +358,10 @@
"sun.management:type=HotspotRuntime";
private final static String HOTSPOT_THREAD_MBEAN_NAME =
"sun.management:type=HotspotThreading";
- final static String HOTSPOT_DIAGNOSTIC_COMMAND_MBEAN_NAME =
- "com.sun.management:type=DiagnosticCommand";
-
- public static HashMap<ObjectName, DynamicMBean> getPlatformDynamicMBeans() {
- HashMap<ObjectName, DynamicMBean> map = new HashMap<>();
- DiagnosticCommandMBean diagMBean = getDiagnosticCommandMBean();
- if (diagMBean != null) {
- map.put(Util.newObjectName(HOTSPOT_DIAGNOSTIC_COMMAND_MBEAN_NAME), diagMBean);
- }
- return map;
- }
-
static void registerInternalMBeans(MBeanServer mbs) {
// register all internal MBeans if not registered
// No exception is thrown if a MBean with that object name
// already registered
addMBean(mbs, getHotspotClassLoadingMBean(),
@@ -439,21 +413,10 @@
if (getCompilationMXBean() != null) {
unregisterMBean(mbs, HOTSPOT_COMPILATION_MBEAN_NAME);
}
}
- static {
- AccessController.doPrivileged(
- new java.security.PrivilegedAction<Void>() {
- public Void run() {
- System.loadLibrary("management");
- return null;
- }
- });
- jvm = new VMManagementImpl();
- }
-
public static boolean isThreadSuspended(int state) {
return ((state & JMM_THREAD_STATE_FLAG_SUSPENDED) != 0);
}
public static boolean isThreadRunningNative(int state) {
@@ -469,6 +432,22 @@
// These values are defined in jmm.h
private static final int JMM_THREAD_STATE_FLAG_MASK = 0xFFF00000;
private static final int JMM_THREAD_STATE_FLAG_SUSPENDED = 0x00100000;
private static final int JMM_THREAD_STATE_FLAG_NATIVE = 0x00400000;
+ // Invoked by the VM
+ private static MemoryPoolMXBean createMemoryPool
+ (String name, boolean isHeap, long uThreshold, long gcThreshold) {
+ return new MemoryPoolImpl(name, isHeap, uThreshold, gcThreshold);
+ }
+
+ private static MemoryManagerMXBean createMemoryManager(String name) {
+ return new MemoryManagerImpl(name);
+ }
+
+ private static GarbageCollectorMXBean
+ createGarbageCollector(String name, String type) {
+
+ // ignore type parameter which is for future extension
+ return new GarbageCollectorImpl(name);
+ }
}
< prev index next >