`
程序新手
  • 浏览: 58437 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JMX入门代码

    博客分类:
  • jvm
阅读更多

     
  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();
		 
		 
		 
		 
		 
	 }
	 
	 

}





分享到:
评论

相关推荐

    JMX 入门 详细 教程

    JMX是一份规范,SUN依据这个规范在JDK(1.3、1.4、5.0)提供了JMX接口。而根据这个接口的实现则有很多种,比如Weblogic 的JMX实现、MX4J、JBoss的JMX实现...JDK5.0则内嵌了进来,安装JDK5.0就可以开发基于JMX的代码了。

    jmx入门

    jmx入门,包括一个文档和相应的源代码

    simplejmx:简单的JMX Java库,可帮助使用JMX和Web发布对象

    Maven软件包通过发布 享受,格雷·沃森小样计划这是一个可以帮助您入门。通过HTTP为Web浏览器发布JMX Bean SimpleJMX还包含一个使用Jetty的简单Web服务器处理程序,以便您可以使用JmxWebServer类从Web浏览器或其他...

    Android代码-vjtools

    主力于Java的唯品会,关于Java的一些小家底。 各位看官看着是好的,烦请“Star”。 1.0.8版 - 2018.9.24 Java Standard Project Description ...JMX 查看工具 ...文档:《入门科普,围绕JVM的各种

    JAVA上百实例源码以及开源项目源代码

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    JBOSS使用指南

    一.JBOSS入门 1.下载和安装JBoss 2.JBoss的目录结构 3.启动服务器 4.JMX控制台 5.停止服务器 6.JBoss中的部署 二.JBOSS的配置 1. JBoss日志设置 2. web 服务的端口号的修改 3. JBoss 的安全设置 3.1 jmx-console ...

    coherence-bootstrap:Oracle Coherence 入门

    一致性引导 一组旨在快速开始使用 Coherence 的代码片段以及一些更高级的提示和技巧。 测试和示例由多进程测试套件支持,该套件是小网格/一致性孵化器的先驱。... [ 测试代码] 入门很简单: 下载 zip

    Java秒杀系统方案优化高性能高并发学习实战源代码以及笔记..zip

    Java秒杀系统方案优化高性能高并发学习实战源代码以及笔记..zip 章节笔记 第1章-课程介绍及项目框架搭建 知识点 使用spring boot 搭建项目基础框架 使用Thymeleaf做页面展示,封装Result统一结果 集成 mybatis + ...

    JAVA上百实例源码以及开源项目

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    Eclipse开发分布式商城系统+完整视频代码及文档

    │ 淘淘商城源代码.zip │ ├─01.第一天 │ 01.课程计划.avi │ 02.淘淘商城介绍.avi │ 03.创建后台工程-taotao-parent.avi │ 04.创建taotao-manager.avi │ 05.svn的使用.avi │ 06.ssm框架整合思路.avi │ 07....

    基于微服务的车票管理系统源码+项目说明+sql数据库.tar

    3、用途:项目具有较高的学习借鉴价值,也适用于小白学习入门进阶。当然也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或者热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他...

    java开源包8

    MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...

    java开源包10

    MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...

    Spring Boot实战 ,丁雪丰 (译者) 中文版

    5.1.2 通过Groovy消除代码噪声 81 5.1.3 发生了什么 85 5.2 获取依赖 86 5.2.1 覆盖默认依赖版本 87 5.2.2 添加依赖仓库 88 5.3 用CLI运行测试 89 5.4 创建可部署的产物 91 5.5 小结 91 第6...

    spring boot实战.pdf高清无水印

    5.1.2 通过Groovy消除代码噪声 81 5.1.3 发生了什么 85 5.2 获取依赖 86 5.2.1 覆盖默认依赖版本 87 5.2.2 添加依赖仓库 88 5.3 用CLI运行测试 89 5.4 创建可部署的产物 91 5.5 小结 91 第6章 在...

    spring-boot-admin:用于管理Spring Boot应用程序的Admin UI

    endpoint 轻松的日志级别管理与JMX-beans交互查看线程转储查看http-traces 查看审核事件查看http端点查看预定的任务查看和删除活动会话(使用spring-session) 查看Flyway / Liquibase数据库迁移下载heapdump 状态...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part2

    11.2 JMX 447 11.3 SSH 449 11.3.1 新建Spring Boot 项目 449 11.3.2 运行 449 11.3.3 常用命令 451 11.3.4 定制登录用户 452 11.3.5 扩展命令 452 第12 章 分布式系统开发 456 12.1 微服务、原生云应用 456 12.2 ...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part3

    11.2 JMX 447 11.3 SSH 449 11.3.1 新建Spring Boot 项目 449 11.3.2 运行 449 11.3.3 常用命令 451 11.3.4 定制登录用户 452 11.3.5 扩展命令 452 第12 章 分布式系统开发 456 12.1 微服务、原生云应用 456 12.2 ...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part1

    11.2 JMX 447 11.3 SSH 449 11.3.1 新建Spring Boot 项目 449 11.3.2 运行 449 11.3.3 常用命令 451 11.3.4 定制登录用户 452 11.3.5 扩展命令 452 第12 章 分布式系统开发 456 12.1 微服务、原生云应用 456 12.2 ...

Global site tag (gtag.js) - Google Analytics