通过JVM获取相关的服务器信息 .

转载于:http://blog.csdn.net/kongqz/article/details/4171539

 

 

在我们想监控我们的JVM状态的时候,除了可以通过JMX这类jvm提供的接口服务,还是可以自己通过程序来编写一些接口来获取服务器状态信息。

以下代码我在jdk1.5.10版本上测试通过。

import java.lang.management.CompilationMXBean;
import java.lang.management.GarbageCollectorMXBean;
import java.lang.management.MemoryMXBean;
import java.lang.management.MemoryPoolMXBean;
import java.lang.management.RuntimeMXBean;
import java.lang.management.ThreadMXBean;
import java.util.List;
import sun.management.ManagementFactory;
import com.sun.management.OperatingSystemMXBean;


/**
 * java获取所在操作系统的信息,JVM的相关信息
 * @author kongqz
 * */
public class MyJvm {

	/**
	 * @param 直接通过jdk来获取系统相关状态,在1.5.0_10-b03版本以上测试通过
	 */
	public static void main(String[] args) {
		
		System.out.println("=======================通过java来获取相关系统状态============================ ");
		int i = (int)Runtime.getRuntime().totalMemory()/1024;//Java 虚拟机中的内存总量,以字节为单位
		System.out.println("总的内存量 i is "+i);
		int j = (int)Runtime.getRuntime().freeMemory()/1024;//Java 虚拟机中的空闲内存量
		System.out.println("空闲内存量 j is "+j);
		System.out.println("最大内存量 is "+Runtime.getRuntime().maxMemory()/1024);
	
		System.out.println("=======================OperatingSystemMXBean============================ ");
		OperatingSystemMXBean osm = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
	    System.out.println(osm.getFreeSwapSpaceSize()/1024);
	    System.out.println(osm.getFreePhysicalMemorySize()/1024);
	    System.out.println(osm.getTotalPhysicalMemorySize()/1024);
	    
	    //获取操作系统相关信息
	    System.out.println("osm.getArch() "+osm.getArch());
	    System.out.println("osm.getAvailableProcessors() "+osm.getAvailableProcessors());
	    System.out.println("osm.getCommittedVirtualMemorySize() "+osm.getCommittedVirtualMemorySize());
	    System.out.println("osm.getName() "+osm.getName());
	    System.out.println("osm.getProcessCpuTime() "+osm.getProcessCpuTime());
	    System.out.println("osm.getVersion() "+osm.getVersion());
	    //获取整个虚拟机内存使用情况
	    System.out.println("=======================MemoryMXBean============================ ");
	    MemoryMXBean mm=(MemoryMXBean)ManagementFactory.getMemoryMXBean();
	    System.out.println("getHeapMemoryUsage "+mm.getHeapMemoryUsage());
	    System.out.println("getNonHeapMemoryUsage "+mm.getNonHeapMemoryUsage());
	    //获取各个线程的各种状态,CPU 占用情况,以及整个系统中的线程状况
	    System.out.println("=======================ThreadMXBean============================ ");
	    ThreadMXBean tm=(ThreadMXBean)ManagementFactory.getThreadMXBean();
	    System.out.println("getThreadCount "+tm.getThreadCount());
	    System.out.println("getPeakThreadCount "+tm.getPeakThreadCount());
	    System.out.println("getCurrentThreadCpuTime "+tm.getCurrentThreadCpuTime());
	    System.out.println("getDaemonThreadCount "+tm.getDaemonThreadCount());
	    System.out.println("getCurrentThreadUserTime "+tm.getCurrentThreadUserTime());
	    
	    //当前编译器情况
	    System.out.println("=======================CompilationMXBean============================ ");
	    CompilationMXBean gm=(CompilationMXBean)ManagementFactory.getCompilationMXBean();
	    System.out.println("getName "+gm.getName());
	    System.out.println("getTotalCompilationTime "+gm.getTotalCompilationTime());
	    
	    //获取多个内存池的使用情况
	    System.out.println("=======================MemoryPoolMXBean============================ ");
	    List<MemoryPoolMXBean> mpmList=ManagementFactory.getMemoryPoolMXBeans();
	    for(MemoryPoolMXBean mpm:mpmList){
		    System.out.println("getUsage "+mpm.getUsage());
		    System.out.println("getMemoryManagerNames "+mpm.getMemoryManagerNames().toString());
	    }
        //获取GC的次数以及花费时间之类的信息
	    System.out.println("=======================MemoryPoolMXBean============================ ");
	    List<GarbageCollectorMXBean> gcmList=ManagementFactory.getGarbageCollectorMXBeans();
	    for(GarbageCollectorMXBean gcm:gcmList){
		    System.out.println("getName "+gcm.getName());
		    System.out.println("getMemoryPoolNames "+gcm.getMemoryPoolNames());
	    }
        //获取运行时信息
	    System.out.println("=======================RuntimeMXBean============================ ");
	    RuntimeMXBean rmb=(RuntimeMXBean)ManagementFactory.getRuntimeMXBean();
	    System.out.println("getClassPath "+rmb.getClassPath());
	    System.out.println("getLibraryPath "+rmb.getLibraryPath());
	    System.out.println("getVmVersion "+rmb.getVmVersion());
	}

}


 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值