`
程序新手
  • 浏览: 59531 次
  • 性别: 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入门是一个重要的主题,尤其对于那些希望深入了解Java应用监控和管理的开发者而言。 这篇博客文章(可以通过给定的链接访问)可能是介绍JMX基础知识的一个很好的起点。虽然具体的博客内容未在描述中给出,但我们...

    jmx 入门文档,附有开发实例文档

    - **可扩展性**:JMX允许添加新的管理功能而不会影响现有代码。 - **跨平台兼容**:因为它是Java的一部分,所以JMX可以在任何支持Java的平台上运行。 - **标准化**:JMX是Java平台的标准,这意味着有广泛的支持和...

    jmx入门

    Java Management Extensions(JMX)是Java平台上的一个标准技术,用于管理和监控应用程序、系统和服务。JMX提供了一种灵活的框架,...结合实际的源代码,你可以进一步探索JMX的实践应用,从而提升你的Java开发技能。

    jmx入门例子源码 (含jmxtools.jar包)

    总结一下,这个JMX入门例子展示了如何创建一个简单的MBean,将其注册到MBean服务器,并通过`jconsole`进行交互。了解JMX对于任何需要管理和监控Java应用的开发者来说都是一项重要技能,它提供了强大的灵活性和可扩展...

    JMX入门教程

    ### JMX入门教程详解 #### 一、JMX概述与价值 JMX,全称Java Management Extensions,是Java平台提供的一套标准化管理框架,旨在帮助开发者在任何Java应用程序中植入管理功能。通过JMX,可以实现对应用程序的监控...

    JMX初学资料 初学者入门教程

    压缩包中的“一起分享 一起成长 - goCom - SOA中国第一社区.htm”可能是某个社区讨论JMX的网页,其中可能包含了一些讨论、示例代码或者用户的经验分享。“新建 文本文档.txt”可能是一份简单的文本教程,介绍JMX的...

    JMX: Developer's Quick Start Guide

    ### JMX:开发人员快速入门指南 #### 一、概述 **Java Management Extensions (JMX)**,简称为JMX,是Java平台提供的一种标准API,用于管理和监控应用程序资源。通过JMX,Java开发者可以实现对其应用程序组件(或...

    groovy-jmx-2.1.7.zip

    Azure SDK for Java 通常会包含示例代码、文档和必要的依赖库,以帮助开发者快速入门。在“azure-sdk-for-java.zip”压缩包内的“azure-sdk-for-java-master”可能是指源码仓库的主分支,包括所有子项目的源代码、...

    JMX in Action

    - **示例演示**:通过具体的代码示例来展示如何使用JMX进行资源管理,帮助读者更好地理解理论知识。 ##### 2. “Hello World”,JMX的方式 - **JMX Hello World程序**:通过一个简单的“Hello World”程序来介绍...

    SpringBoot基础入门demo

    这些端点可以通过HTTP接口或者JMX访问,帮助开发者了解应用的实时状态。 **8. 配置文件** SpringBoot支持YAML和Properties两种配置文件格式,它们提供了层次化的配置,使得配置更加清晰。通过@Value注解或者@...

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

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

    Java网络编程从入门到精通

    本教程“Java网络编程从入门到精通”将详细讲解这些概念,并通过实例代码说明如何在实践中应用。通过学习,你将掌握创建网络服务、处理网络请求、优化网络性能等技能,为你的Java开发生涯打下坚实的基础。无论是新手...

    J2EE快速入门J2EE快速入门

    此外,管理工具如Admin Console或JMX(Java Management Extensions)允许管理员监控和管理运行中的J2EE应用。 综上所述,J2EE为Web开发提供了全面的解决方案,涵盖了从用户界面到业务逻辑再到数据存储的各个层面。...

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

    Java二进制IO类与文件复制操作实例 16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系...

    Ant入门与进阶

    8. **远程构建(Remote Builds)**: Ant支持通过JMX接口进行远程控制,允许在不同的机器上执行构建任务。 通过学习和实践这些Ant的基本概念和高级特性,你将能够有效地管理Java项目的构建过程,提高开发效率,同时...

    Struts+Hibernate+Spring入门教程及实例.rar

    这个“Struts+Hibernate+Spring入门教程及实例”压缩包可能包含以下内容:教程文档、代码示例、项目结构、配置文件等,帮助初学者理解这三个框架的基本概念、配置方法以及如何在实际项目中进行整合。通过阅读文档、...

    WebSphere快速入门.doc

    - 理解WebSphere的性能监控工具,如JMX和System Management Console。 - 调整JVM参数,优化内存分配,提升服务器性能。 6. **故障排查**: - 学习如何查看和分析WebSphere的日志文件,以定位和解决问题。 - ...

    Android代码-vjtools

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

    activemq入门总结

    标题 "activemq入门总结" 暗示了本文将主要围绕Apache ActiveMQ,一个流行的开源消息代理和队列中间件进行讲解。ActiveMQ是基于Java Message Service (JMS) API 的,它允许应用程序在分布式环境中发送和接收消息,...

    Jmeter性能测试入门

    【Jmeter性能测试入门】 Apache JMeter是一款强大的开源性能测试工具,主要被用于Web应用程序的负载和压力测试。它能够模拟多个并发用户执行各种操作,从而分析系统的性能瓶颈和稳定性。JMeter最初设计用于HTTP协议...

Global site tag (gtag.js) - Google Analytics