现在的位置: 首页 > 综合 > 正文

(转)用Java获得当前性能信息

2013年10月15日 ⁄ 综合 ⁄ 共 3393字 ⁄ 字号 评论关闭

http://www.blogjava.net/amigoxie/archive/2008/04/30/197564.html
在Java中,可以获得总的物理内存、剩余的物理内存、已使用的物理内存等信息,本例讲解如何取得这些信息,并且获得在Windows下的内存使用率。
     首先编写一个MonitorInfoBean类,用来装载监控的一些信息,包括物理内存、剩余的物理内存、已使用的物理内存、内存使用率等字段,该类的代码如下:

package com.amigo.performance;

/**
 * 监视信息的JavaBean类.
 * 
@author <a href="mailto:xiexingxing1121@126.com">AmigoXie</a>
 * 
@version 1.0 
 * Creation date: 2008-4-25 - 上午10:37:00
 
*/

public class MonitorInfoBean {
    
/** 可使用内存. */
    
private long totalMemory;
    
    
/** 剩余内存. */
    
private long freeMemory;
    
    
/** 最大可使用内存. */
    
private long maxMemory;
    
    
/** 操作系统. */
    
private String osName;
    
    
/** 总的物理内存. */
    
private long totalMemorySize;
    
    
/** 剩余的物理内存. */
    
private long freePhysicalMemorySize;
    
    
/** 已使用的物理内存. */
    
private long usedMemory;
    
    
/** 线程总数. */
    
private int totalThread;
    
    
/** cpu使用率. */
    
private double cpuRatio;

    
public long getFreeMemory() {
        
return freeMemory;
    }


    
public void setFreeMemory(long freeMemory) {
        
this.freeMemory = freeMemory;
    }


    
public long getFreePhysicalMemorySize() {
        
return freePhysicalMemorySize;
    }


    
public void setFreePhysicalMemorySize(long freePhysicalMemorySize) {
        
this.freePhysicalMemorySize = freePhysicalMemorySize;
    }


    
public long getMaxMemory() {
        
return maxMemory;
    }


    
public void setMaxMemory(long maxMemory) {
        
this.maxMemory = maxMemory;
    }


    
public String getOsName() {
        
return osName;
    }


    
public void setOsName(String osName) {
        
this.osName = osName;
    }


    
public long getTotalMemory() {
        
return totalMemory;
    }


    
public void setTotalMemory(long totalMemory) {
        
this.totalMemory = totalMemory;
    }


    
public long getTotalMemorySize() {
        
return totalMemorySize;
    }


    
public void setTotalMemorySize(long totalMemorySize) {
        
this.totalMemorySize = totalMemorySize;
    }


    
public int getTotalThread() {
        
return totalThread;
    }


    
public void setTotalThread(int totalThread) {
        
this.totalThread = totalThread;
    }


    
public long getUsedMemory() {
        
return usedMemory;
    }


    
public void setUsedMemory(long usedMemory) {
        
this.usedMemory = usedMemory;
    }


    
public double getCpuRatio() {
        
return cpuRatio;
    }


    
public void setCpuRatio(double cpuRatio) {
        
this.cpuRatio = cpuRatio;
    }

}

     接着编写一个获得当前的监控信息的接口,该类的代码如下所示:

package com.amigo.performance;

/**
 * 获取系统信息的业务逻辑类接口.
 * 
@author <a href="mailto:xiexingxing1121@126.com">AmigoXie</a>
 * 
@version 1.0 
 * Creation date: 2008-3-11 - 上午10:06:06
 
*/

public interface IMonitorService {
    
/**
     * 获得当前的监控对象.
     * 
@return 返回构造好的监控对象
     * 
@throws Exception
     * 
@author <a href="mailto:xiexingxing1121@126.com">AmigoXie</a>
     * Creation date: 2008-4-25 - 上午10:45:08
     
*/

    
public MonitorInfoBean getMonitorInfoBean() throws Exception;

}

     该类的实现类MonitorServiceImpl如下所示:

package com.amigo.performance;

import java.io.InputStreamReader;
import java.io.LineNumberReader;

import sun.management.ManagementFactory;

import com.sun.management.OperatingSystemMXBean;

/**
 * 获取系统信息的业务逻辑实现类.
 * 
@author <a href="mailto:xiexingxing1121@126.com">AmigoXie</a>
 * 
@version 1.0 Creation date: 2008-3-11 - 上午10:06:06
 
*/

public class MonitorServiceImpl implements IMonitorService {
    
    
private static final int CPUTIME = 30;

    
private 

抱歉!评论已关闭.