sun 开头包,所以在jar包中查找不到,都是与平台相关的。大家用不用都可以考虑。
jconsole中就是依靠这个类来获取进程cpu的时间的。
网上有关他的帖子很多,都是解决编译器错误的,有的直接把jconsole的生产代码全部copy,就是没有人告诉我们如何创建这个接口的实现类,毕竟没有api,最后我也是看了jconsole的源码(实际创建调用有点麻烦,他们用了各种代理),然后把直观的代码抽取出来,再加上javase的功底(说白就是对api的熟悉),把产生这个类的代码复现出来了,下面和大家分享
private com.sun.management.OperatingSystemMXBean getInstance(){
String name ="java.lang:type=OperatingSystem";
ObjectName objectName = null;
try {
objectName = new ObjectName(name);
} catch (MalformedObjectNameException e) {
e.printStackTrace();
}
MBeanServer server = ManagementFactory.getPlatformMBeanServer();
return JMX.newMXBeanProxy(server, objectName,com.sun.management.OperatingSystemMXBean.class );
}
非常简短,就是获取三个参数的过程。当你只需要这个类的时候,以上代码是不错的选择
JMX是1.6的新类,1.5是没有的,1.5需要调用MBeanServerInvocationHandler的newProxyInstance方法,notificationBroadcaster设置为flase。