在做系统监控的时候,为了分析系统的性能,我们不仅仅要取得CPU的使用数据,还要知道内存的占用情况。使用sigar也可以轻松的完成跨平台的内存监控数据。
内存的主要指标有:物理内存的大小、使用数、剩余数;交换内存的大小、使用数、剩余数;RAM的大小等等。
下面通过例子说明:
- 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));
- }
- }
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));
}
}
输出:
- <MemData>
- <mem>
- <total>1073102848</total>
- <ram>1024</ram>
- <used>932274176</used>
- <free>140828672</free>
- <actualUsed>932274176</actualUsed>
- <actualFree>140828672</actualFree>
- </mem>
- <swap>
- <total>2580328448</total>
- <used>870432768</used>
- <free>1709895680</free>
- <pageIn>137691</pageIn>
- <pageOut>19392</pageOut>
- </swap>
- </MemData>