用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

管理和监视java虚拟机 MXBean

2012-11-16 作者: 程序猿style举报

[java]代码库

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.OperatingSystemMXBean;
import java.lang.management.RuntimeMXBean;
import java.lang.management.ThreadMXBean;
import java.util.List;

/**
 * 用户可以通过MXBean可以管理和监视虚拟机。
 */
public class JDKMBean {

	/**
	 * MemoryMXBean是Java 虚拟机的内存系统的管理接口 Java 虚拟机具有此接口的实现类的单一实例
	 */
	public static void printMemoryMXBean() {
		// 获得单一实例
		MemoryMXBean instance = ManagementFactory.getMemoryMXBean();
		System.out.printf("%n---%s---%n", instance.getClass().getName());
		// 返回用于对象分配的堆的当前内存使用量
		System.out.printf("%s: %s%n", "HeapMemoryUsage",
				instance.getHeapMemoryUsage());
		// 返回 Java 虚拟机使用的非堆内存的当前使用量
		System.out.printf("%s: %s%n", "getNonHeapMemoryUsage",
				instance.getNonHeapMemoryUsage());
		// 运行垃圾回收器
		instance.gc();
	}

	/**
	 * ClassLoadingMXBean是Java 虚拟机的类加载系统的管理接口 Java 虚拟机具有此接口的实现类的单个实例
	 */
	public static void printClassLoadingMXBean() {
		// 获得单一实例
		ClassLoadingMXBean instance = ManagementFactory.getClassLoadingMXBean();
		System.out.printf("%n---%s---%n", instance.getClass().getName());
		// 返回当前加载到 Java 虚拟机中的类的数量
		System.out.printf("%s: %s%n", "LoadedClassCount",
				instance.getLoadedClassCount());
		// 返回自 Java 虚拟机开始执行到目前已经加载的类的总数
		System.out.printf("%s: %s%n", "TotalLoadedClassCount",
				instance.getTotalLoadedClassCount());
		// 返回自 Java 虚拟机开始执行到目前已经卸载的类的总数
		System.out.printf("%s: %s%n", "UnloadedClassCount",
				instance.getUnloadedClassCount());
	}

	/**
	 * ThreadMXBean是Java 虚拟机线程系统的管理接口 Java 虚拟机具有此接口的实现类的单个实例
	 */
	public static void printThreadMXBean() {
		// 获得单一实例
		ThreadMXBean instance = ManagementFactory.getThreadMXBean();
		System.out.printf("%n---%s---%n", instance.getClass().getName());
		// 返回活动线程的当前数目,包括守护线程和非守护线程。
		System.out.printf("%s: %s%n", "ThreadCount", instance.getThreadCount());
		// 返回活动线程 ID
		System.out.printf("%s: %n", "Thread IDs");
		long[] ids = instance.getAllThreadIds();
		for (long id : ids) {
			System.out.printf("%s;  ", id);
		}
		System.out.printf("%n");
		// 返回活动守护线程的当前数目
		System.out.printf("%s: %s%n", "DaemonThreadCount",
				instance.getDaemonThreadCount());
		// 返回自从 Java 虚拟机启动或峰值重置以来峰值活动线程计数
		System.out.printf("%s: %s%n", "PeakThreadCount",
				instance.getPeakThreadCount());
		// 返回当前线程的总 CPU 时间
		System.out.printf("%s: %s%n", "CurrentThreadCpuTime",
				instance.getCurrentThreadCpuTime());
		// 返回当前线程在用户模式中执行的 CPU 时间
		System.out.printf("%s: %s%n", "CurrentThreadUserTime",
				instance.getCurrentThreadUserTime());
	}

	/**
	 * RuntimeMXBean是Java 虚拟机的运行时系统的管理接口 Java 虚拟机具有此接口的实现类的单个实例
	 */
	public static void printRuntimeMXBean() {
		// 获得单一实例
		RuntimeMXBean instance = ManagementFactory.getRuntimeMXBean();
		System.out.printf("%n---%s---%n", instance.getClass().getName());
		// 返回由引导类加载器用于搜索类文件的引导类路径
		System.out.printf("%s: %s%n", "BootClassPath",
				instance.getBootClassPath());
		// 返回系统类加载器用于搜索类文件的 Java 类路径
		System.out.printf("%s: %s%n", "ClassPath", instance.getClassPath());
		// 返回传递给 Java 虚拟机的输入变量,其中不包括传递给 main 方法的变量
		System.out.printf("%s%n", "InputArguments");
		List<String> args = instance.getInputArguments();
		for (String arg : args) {
			System.out.printf("%s;  ", arg);
		}
		// 返回 Java 库路径
		System.out.printf("%s: %s%n", "LibraryPath", instance.getLibraryPath());
		// 返回正在运行的 Java 虚拟机实现的管理接口的规范版本
		System.out.printf("%s: %s%n", "ManagementSpecVersion",
				instance.getManagementSpecVersion());
		// 返回表示正在运行的 Java 虚拟机的名称
		System.out.printf("%s: %s%n", "Name", instance.getName());

		// 返回 Java 虚拟机规范名称
		System.out.printf("%s: %s%n", "SpecName", instance.getSpecName());
		// 返回 Java 虚拟机规范供应商
		System.out.printf("%s: %s%n", "SpecVendor", instance.getSpecVendor());
		// 返回 Java 虚拟机规范版本
		System.out.printf("%s: %s%n", "SpecVersion", instance.getSpecVersion());

		// 返回 Java 虚拟机实现名称
		System.out.printf("%s: %s%n", "VmName", instance.getVmName());
		// 返回 Java 虚拟机实现供应商
		System.out.printf("%s: %s%n", "VmVendor", instance.getVmVendor());
		// 返回 Java 虚拟机实现版本
		System.out.printf("%s: %s%n", "VmVersion", instance.getVmVersion());

		// 返回 Java 虚拟机的启动时间
		System.out.printf("%s: %s%n", "StartTime", instance.getStartTime());
		// 返回 Java 虚拟机的正常运行时间
		System.out.printf("%s: %s%n", "Uptime", instance.getUptime());
	}

	/**
	 * OperatingSystemMXBean是操作系统的管理接口 Java 虚拟机具有此接口的实现类的单个实例
	 */
	public static void printOperatingSystemMXBean() {
		// 获得单一实例
		OperatingSystemMXBean instance = ManagementFactory
				.getOperatingSystemMXBean();
		System.out.printf("%n---%s---%n", instance.getClass().getName());
		// 返回操作系统的架构
		System.out.printf("%s: %s%n", "Arch", instance.getArch());
		// 返回 Java 虚拟机可以使用的处理器数目
		System.out.printf("%s: %s%n", "AvailableProcessors",
				instance.getAvailableProcessors());
		// 返回操作系统名称
		System.out.printf("%s: %s%n", "Name", instance.getName());
		// 返回操作系统版本
		System.out.printf("%s: %s%n", "Version", instance.getVersion());
	}

	/**
	 * CompilationMXBean是Java 虚拟机的编译系统的管理接口 Java 虚拟机具有此接口的实现类的单个实例
	 */
	public static void printCompilationMXBean() {
		// 获得单一实例
		CompilationMXBean instance = ManagementFactory.getCompilationMXBean();
		System.out.printf("%n---%s---%n", instance.getClass().getName());
		// 返回即时 (JIT) 编译器的名称
		System.out.printf("%s: %s%n", "Name", instance.getName());
		// 返回在编译上花费的累积耗费时间的近似值
		System.out.printf("%s: %s%n", "TotalCompilationTime",
				instance.getTotalCompilationTime());
	}

	/**
	 * GarbageCollectorMXBean是Java 虚拟机的垃圾回收的管理接口 Java 虚拟机可能具有此接口的实现类的一个或多个实例
	 */
	public static void printGarbageCollectorMXBean() {
		// 获得所有实例
		List<GarbageCollectorMXBean> instances = ManagementFactory
				.getGarbageCollectorMXBeans();
		System.out.printf("%n---%s---%n",
				GarbageCollectorMXBean.class.getName());
		// 遍历每个实例
		for (GarbageCollectorMXBean instance : instances) {
			// 返回垃圾收集器的名字
			System.out.printf("***%s: %s***%n", "Name", instance.getName());
			// 返回已发生的回收的总次数
			System.out.printf("%s: %s%n", "CollectionCount",
					instance.getCollectionCount());
			// 返回近似的累积回收时间
			System.out.printf("%s: %s%n", "CollectionTime",
					instance.getCollectionTime());
		}
	}

	public static void main(String[] args) {
		JDKMBean.printOperatingSystemMXBean();
		JDKMBean.printRuntimeMXBean();
		JDKMBean.printClassLoadingMXBean();
		JDKMBean.printCompilationMXBean();
		JDKMBean.printMemoryMXBean();
		JDKMBean.printThreadMXBean();
		JDKMBean.printGarbageCollectorMXBean();
	}
}


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...