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

2014-11-24 02:47:53 · 作者: · 浏览: 5

在Java中,可以获得总的物理内存、剩余的物理内存、已使用的物理内存等信息,本例讲解如何取得这些信息,并且获得在Windows下的内存使用率。
首先编写一个MonitorInfoBean类,用来装载监控的一些信息,包括物理内存、剩余的物理内存、已使用的物理内存、内存使用率等字段,该类的代码如下:
package com.amigo.performance;

/**
* 监视信息的JavaBean类.
* @author AmigoXiemailto:xiexingxing1121@126.com">AmigoXie>
* @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
AmigoXiemailto:xiexingxing1121@126.com">AmigoXie>
* @version 1.0
* Creation date: 2008-3-11 - 上午10:06:06
*/
public interface IMonitorService {
/**
* 获得当前的监控对象.
* @return 返回构造好的监控对象
* @throws Exception
* @author
AmigoXiemailto:xiexingxing1121@126.com">AmigoXie>
* 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
AmigoXiemailto:xiexingxing1121@126.com">AmigoXie>
* @version 1.0 Creation date: 2008-3-11 - 上午10:06:06
*/
public class MonitorServiceImpl implements IMonito