Sigar使用之:取得系统内存的数据

在做系统监控的时候,为了分析系统的性能,我们不仅仅要取得CPU的使用数据,还要知道内存的占用情况。使用sigar也可以轻松的完成跨平台的内存监控数据。

内存的主要指标有:物理内存的大小、使用数、剩余数;交换内存的大小、使用数、剩余数;RAM的大小等等。

下面通过例子说明:

Java代码 复制代码
  1. package lab.sigar;   
  2.   
  3. import org.hyperic.sigar.Mem;   
  4. import org.hyperic.sigar.Sigar;   
  5. import org.hyperic.sigar.SigarException;   
  6. import org.hyperic.sigar.Swap;   
  7.   
  8. import com.thoughtworks.xstream.XStream;   
  9.   
  10. /**  
  11.  * 内存数据  
  12.  *   
  13.  * 使用Sigar获得系统内存信息  
  14.  *   
  15.  */  
  16. public class MemoryData {   
  17.     private Mem mem;   
  18.     private Swap swap;   
  19.   
  20.     public MemoryData() {   
  21.     }   
  22.   
  23.     public void populate(Sigar sigar) throws SigarException {   
  24.         mem = sigar.getMem();   
  25.         swap = sigar.getSwap();   
  26.     }   
  27.   
  28.     public static MemoryData gather(Sigar sigar) throws SigarException {   
  29.         MemoryData data = new MemoryData();   
  30.         data.populate(sigar);   
  31.         return data;   
  32.     }   
  33.        
  34.     public static void main(String[] args) throws Exception {   
  35.         Sigar sigar = new Sigar();   
  36.         MemoryData memData = MemoryData.gather(sigar);   
  37.         XStream xstream = new XStream();   
  38.         xstream.alias("MemData", MemoryData.class);   
  39.         System.out.println(xstream.toXML(memData));   
  40.     }   
  41.   
  42. }  
package lab.sigar;

import org.hyperic.sigar.Mem;
import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.SigarException;
import org.hyperic.sigar.Swap;

import com.thoughtworks.xstream.XStream;

/**
 * 内存数据
 * 
 * 使用Sigar获得系统内存信息
 * 
 */
public class MemoryData {
	private Mem mem;
	private Swap swap;

	public MemoryData() {
	}

	public void populate(Sigar sigar) throws SigarException {
		mem = sigar.getMem();
		swap = sigar.getSwap();
	}

	public static MemoryData gather(Sigar sigar) throws SigarException {
		MemoryData data = new MemoryData();
		data.populate(sigar);
		return data;
	}
	
	public static void main(String[] args) throws Exception {
    	Sigar sigar = new Sigar();
    	MemoryData memData = MemoryData.gather(sigar);
    	XStream xstream = new XStream();
    	xstream.alias("MemData", MemoryData.class);
        System.out.println(xstream.toXML(memData));
    }

}



输出:

Xml代码 复制代码
  1. <MemData>  
  2.   <mem>  
  3.     <total>1073102848</total>  
  4.     <ram>1024</ram>  
  5.     <used>932274176</used>  
  6.     <free>140828672</free>  
  7.     <actualUsed>932274176</actualUsed>  
  8.     <actualFree>140828672</actualFree>  
  9.   </mem>  
  10.   <swap>  
  11.     <total>2580328448</total>  
  12.     <used>870432768</used>  
  13.     <free>1709895680</free>  
  14.     <pageIn>137691</pageIn>  
  15.     <pageOut>19392</pageOut>  
  16.   </swap>  
  17. </MemData>  

你可能感兴趣的:(xml)