JMX入门代码




package org.jmx.monitor.local.test;

import java.lang.management.ClassLoadingMXBean;
import java.lang.management.CompilationMXBean;
import java.lang.management.GarbageCollectorMXBean;
import java.lang.management.ManagementFactory;
import java.lang.management.MemoryMXBean;
import java.lang.management.MemoryPoolMXBean;
import java.lang.management.MemoryUsage;
import java.lang.management.OperatingSystemMXBean;
import java.lang.management.RuntimeMXBean;
import java.lang.management.ThreadInfo;
import java.lang.management.ThreadMXBean;
import java.util.List;

import javax.management.MBeanServer;

/**
* @company www.changyou.com
* @author wangzhen
* @date 2011-10-26
*/
public class TestJVM {

public static void main(String[] args) {

// getClassInfo();
// getComplaint();
// getMemory();
//getThread();
//getRuntimeJVM();
//getOperatingSystem();
//getMemoryPoolMXBeans();
getGarbageCollectorMXBeans();
//getMBeanServer();
}

/**
* class信息
*/
public static void getClassInfo() {

ClassLoadingMXBean bean = ManagementFactory.getClassLoadingMXBean();

System.out.println("正在运行class数量:" + bean.getLoadedClassCount());
System.out.println("一共加载class数量:" + bean.getTotalLoadedClassCount());
System.out.println("已经卸载class数量:" + bean.getUnloadedClassCount());
}

/**
* 编译信息
*/
public static void getComplaint() {

CompilationMXBean bean = ManagementFactory.getCompilationMXBean();

System.out.println("虚拟机编译器名称:" + bean.getName() + ",编译时间:"
+ bean.getTotalCompilationTime());

}

/**
* 内存信息
*/
public static void getMemory() {

MemoryMXBean bean = ManagementFactory.getMemoryMXBean();

System.out.println("返回其终止被挂起的对象的近似数目:"
+ bean.getObjectPendingFinalizationCount());

MemoryUsage heapUserage = bean.getHeapMemoryUsage();

System.out.println("堆内存____Java 虚拟机最初从操作系统请求用于内存管理的内存量:"
+ heapUserage.getInit() / 1024);
System.out.println("堆内存____已使用的内存量:" + heapUserage.getUsed() / 1024);
System.out.println("堆内存____已提交给 Java 虚拟机使用的内存量:"
+ heapUserage.getCommitted() / 1024);
System.out.println("堆内存____内存管理的最大内存量:" + heapUserage.getMax() / 1024);

MemoryUsage noHeapUserage = bean.getNonHeapMemoryUsage();

System.out.println("栈内存____Java 虚拟机最初从操作系统请求用于内存管理的内存量:"
+ noHeapUserage.getInit() / 1024);
System.out.println("栈内存____已使用的内存量:" + noHeapUserage.getUsed() / 1024);
System.out.println("栈内存____已提交给 Java 虚拟机使用的内存量:"
+ noHeapUserage.getCommitted() / 1024);
System.out
.println("栈内存____内存管理的最大内存量:" + noHeapUserage.getMax() / 1024);

}

/**
* 获取线程信息
*/
public static void getThread() {

ThreadMXBean bean = ManagementFactory.getThreadMXBean();

System.out.println("总共线程数:"+bean.getThreadCount());

ThreadInfo[] threadInfo = bean.dumpAllThreads(true, true);

for (int i = 0; i < threadInfo.length; i++) {

System.out.println("线程名称:" + threadInfo[i].getThreadId() + ",线程Id:"
+ threadInfo[i].getThreadId() + ",线程状况:"
+ threadInfo[i].getThreadState());
StackTraceElement[] stackElement = threadInfo[i].getStackTrace();
for (int j = 0; j < stackElement.length; j++) {

System.out.println("class名称:"+stackElement[j].getClassName() + ",文件名称:"
+ stackElement[j].getFileName() + ",行数:"
+ stackElement[j].getLineNumber() + ",方法名:"
+ stackElement[j].getMethodName());

}

}

System.out.println("死锁状况:"+bean.findDeadlockedThreads());
System.out.println("死锁周期:"+bean.findMonitorDeadlockedThreads());
System.out.println("JVM从启动开始最大线程数量:"+bean.getPeakThreadCount());


}
/*
* 运行时JVM信息
*/
public static void getRuntimeJVM(){


RuntimeMXBean bean = ManagementFactory.getRuntimeMXBean();

System.out.println("虚拟机名称:"+bean.getName());
System.out.println("引导类加载器用于搜索类文件的引导类路径:"+bean.getBootClassPath());
System.out.println("统类加载器用于搜索类文件的 Java 类路径:"+bean.getClassPath());
System.out.println("Java 库路径:"+bean.getLibraryPath());
System.out.println("Java 虚拟机的启动时间:"+bean.getStartTime()/1000+"s");
System.out.println("Java 虚拟机的正常运行时间:"+bean.getUptime()/1000+"s");

}

/**
* 操作系统信息
*/
public static void getOperatingSystem(){

OperatingSystemMXBean bean = ManagementFactory.getOperatingSystemMXBean();

System.out.println("操作系统架构:"+bean.getArch());
System.out.println("JAVA虚拟机可以使用处理器数量:"+bean.getAvailableProcessors());
System.out.println("操作系统名称:"+bean.getName()+",操作系统版本号:"+bean.getVersion());
System.out.println("最后一分钟内系统加载平均值"+bean.getSystemLoadAverage());

}
/**
* 虚拟机中的 MemoryPoolMXBean 对象列表
*/
public static void getMemoryPoolMXBeans(){

List<MemoryPoolMXBean> beans = ManagementFactory.getMemoryPoolMXBeans();

for(int i = 0 ; i < beans.size() ; i++){

MemoryPoolMXBean bean = beans.get(i);

System.out.print("内存池名称:"+bean.getName()+",");
System.out.print("当前的内存使用量:"+bean.getUsage()+",");
System.out.print("峰值内存使用量:"+bean.getPeakUsage()+",");
if(bean.isUsageThresholdSupported()){
System.out.println("此内存池的使用量阈值"+bean.getUsageThreshold());
}
}

}
/**
* 获取垃圾回收MXBeans信息
*/
public static void getGarbageCollectorMXBeans(){

List<GarbageCollectorMXBean> beans = ManagementFactory.getGarbageCollectorMXBeans();

for(int i = 0 ; i < beans.size() ; i++){

GarbageCollectorMXBean bean = beans.get(i);

System.out.println("回收器名称:"+bean.getName()+",回收期次数"+bean.getCollectionCount()+",回收时间"+bean.getCollectionTime()/1000);

String[] poolNames = bean.getMemoryPoolNames();

for(int j = 0 ; j < poolNames.length; j++){
System.out.print(poolNames[j]);
}
System.out.println();
}




}

/**
* MbeanServer信息
*/
public static void getMBeanServer(){

MBeanServer bean = ManagementFactory.getPlatformMBeanServer();





}



}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值