<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_eafy.ye</title><subtitle type="text"/><id>http://feed.cnblogs.com/blog/u/12012/rss</id><updated>2011-05-13T03:13:23Z</updated><author><name>eafy.ye</name><uri>http://www.cnblogs.com/eafy/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/eafy/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/12012/rss"/><entry><id>http://www.cnblogs.com/eafy/archive/2011/05/13/2045303.html</id><title type="text">Java获取系统信息（cpu，内存，硬盘，进程等）的相关方法</title><summary type="text">Java获取系统信息（cpu，内存，硬盘，进程等）的相关方法1.利用jdk自带的API获取信息：（只支持jdk1.60以上的版本啊）import java.io.InputStreamReader;import java.io.LineNumberReader;import java.util.ArrayList;import java.util.List;import mytools.com.sun.management.OperatingSystemMXBean;import mytools.java.io.File;import mytools.java.lang.management.</summary><published>2011-05-13T03:13:00Z</published><updated>2011-05-13T03:13:00Z</updated><author><name>eafy.ye</name><uri>http://www.cnblogs.com/eafy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/eafy/archive/2011/05/13/2045303.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/eafy/archive/2011/05/13/2045303.html"/><content type="html">&lt;div class="multicntwrap"&gt;&lt;div class="multicnt"&gt;&lt;div&gt;&lt;h3 class="title pre fs1"&gt;&lt;span class="tcnt"&gt;&lt;a name="baidusnap0"&gt;&lt;/a&gt;&lt;b style="background-color: #ffff66; color: black;"&gt;Java&lt;/b&gt;&lt;a name="baidusnap2"&gt;&lt;/a&gt;&lt;b style="background-color: #99ff99; color: black;"&gt;获取&lt;/b&gt;系统信息（cpu，内存，硬盘，&lt;a name="baidusnap5"&gt;&lt;/a&gt;&lt;b style="background-color: #880000; color: white;"&gt;进程&lt;/b&gt;等）的相关方法&lt;/span&gt;&lt;span class="bgc0 fc07 fw0 fs0"&gt;&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="bct fc05 fc11 nbw-blog ztag"&gt;&lt;p&gt;1.利用jdk自带的API&lt;b style="background-color: #99ff99; color: black;"&gt;获取&lt;/b&gt;信息：（只支持jdk1.60以上的版本啊）&lt;/p&gt;&lt;p&gt;imp&lt;wbr&gt;&lt;/wbr&gt;&lt;wbr&gt;&lt;/wbr&gt;ort &lt;b style="background-color: #ffff66; color: black;"&gt;java&lt;/b&gt;.io.InputStreamReader;&lt;br /&gt;imp&lt;wbr&gt;&lt;/wbr&gt;&lt;wbr&gt;&lt;/wbr&gt;ort &lt;b style="background-color: #ffff66; color: black;"&gt;java&lt;/b&gt;.io.LineNumberReader;&lt;br /&gt;imp&lt;wbr&gt;&lt;/wbr&gt;&lt;wbr&gt;&lt;/wbr&gt;ort &lt;b style="background-color: #ffff66; color: black;"&gt;java&lt;/b&gt;.util.ArrayList;&lt;br /&gt;imp&lt;wbr&gt;&lt;/wbr&gt;&lt;wbr&gt;&lt;/wbr&gt;ort &lt;b style="background-color: #ffff66; color: black;"&gt;java&lt;/b&gt;.util.List;&lt;/p&gt;&lt;p&gt;imp&lt;wbr&gt;&lt;/wbr&gt;&lt;wbr&gt;&lt;/wbr&gt;ort mytools.com.sun.management.OperatingSystemMXBean;&lt;br /&gt;imp&lt;wbr&gt;&lt;/wbr&gt;&lt;wbr&gt;&lt;/wbr&gt;ort mytools.&lt;b style="background-color: #ffff66; color: black;"&gt;java&lt;/b&gt;.io.File;&lt;br /&gt;imp&lt;wbr&gt;&lt;/wbr&gt;&lt;wbr&gt;&lt;/wbr&gt;ort mytools.&lt;b style="background-color: #ffff66; color: black;"&gt;java&lt;/b&gt;.lang.management.ManagementFactory;&lt;br /&gt;/**&lt;br /&gt;&amp;nbsp;* &lt;b style="background-color: #99ff99; color: black;"&gt;获取&lt;/b&gt;windows系统信息（CPU,内存,文件系统）&lt;br /&gt;&amp;nbsp;* @author libing&lt;br /&gt;&amp;nbsp;*&lt;br /&gt;&amp;nbsp;*/&lt;/p&gt;&lt;p&gt;public class WindowsInfoUtil {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static final int CPUTIME = 500;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static final int PERCENT = 100;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static final int FAULTLENGTH = 10;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void main(String[] args) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(getCpuRatioForWindows());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(getMemery());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(getDisk());&lt;br /&gt;&amp;nbsp;}&lt;/p&gt;&lt;p&gt;&amp;nbsp;//&lt;b style="background-color: #99ff99; color: black;"&gt;获取&lt;/b&gt;内存使用率&lt;br /&gt;&amp;nbsp;public static String getMemery(){&lt;br /&gt;&amp;nbsp; OperatingSystemMXBean osmxb = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();&lt;br /&gt;&amp;nbsp; // 总的物理内存+虚拟内存&lt;br /&gt;&amp;nbsp; long totalvirtualMemory = osmxb.getTotalSwapSpaceSize();&lt;br /&gt;&amp;nbsp; // 剩余的物理内存&lt;br /&gt;&amp;nbsp; long freePhysicalMemorySize = osmxb.getFreePhysicalMemorySize();&lt;br /&gt;&amp;nbsp; Double compare=(Double)(1-freePhysicalMemorySize*1.0/totalvirtualMemory)*100;&lt;br /&gt;&amp;nbsp; String str="内存已使用:"+compare.intValue()+"%";&lt;br /&gt;&amp;nbsp; return str;&lt;br /&gt;&amp;nbsp;}&lt;/p&gt;&lt;p&gt;&amp;nbsp;//&lt;b style="background-color: #99ff99; color: black;"&gt;获取&lt;/b&gt;文件系统使用率&lt;br /&gt;&amp;nbsp;public static List&amp;lt;String&amp;gt; getDisk() {&lt;br /&gt;&amp;nbsp; // 操作系统&lt;br /&gt;&amp;nbsp; List&amp;lt;String&amp;gt; list=new ArrayList&amp;lt;String&amp;gt;();&lt;br /&gt;&amp;nbsp; for (char c = 'A'; c &amp;lt;= 'Z'; c++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; String dirName = c + ":/";&lt;br /&gt;&amp;nbsp;&amp;nbsp; File win = new File(dirName);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(win.exists()){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; long total=(long)win.getTotalSpace();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; long free=(long)win.getFreeSpace();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Double compare=(Double)(1-free*1.0/total)*100;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String str=c+":盘&amp;nbsp; 已使用 "+compare.intValue()+"%";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; list.add(str);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return list;&lt;br /&gt;&amp;nbsp;}&lt;/p&gt;&lt;p&gt;&amp;nbsp;//获得&lt;a name="baidusnap6"&gt;&lt;/a&gt;&lt;b style="background-color: #00aa00; color: white;"&gt;cpu使用率&lt;/b&gt;&lt;br /&gt;&amp;nbsp;public static String getCpuRatioForWindows() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String procCmd = System.getenv("windir") + "&lt;a href="file://system32wbemwmic.exe/"&gt;\\system32\\wbem\\wmic.exe&lt;/a&gt; process get Caption,CommandLine,KernelModeTime,ReadOperationCount,ThreadCount,UserModeTime,WriteOperationCount";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 取&lt;b style="background-color: #880000; color: white;"&gt;进程&lt;/b&gt;信息&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; long[] c0 = readCpu(Runtime.getRuntime().exec(procCmd));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Thread.sleep(CPUTIME);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; long[] c1 = readCpu(Runtime.getRuntime().exec(procCmd));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (c0 != null &amp;amp;&amp;amp; c1 != null) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; long idletime = c1[0] - c0[0];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; long busytime = c1[1] - c0[1];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return "&lt;b style="background-color: #00aa00; color: white;"&gt;CPU使用率&lt;/b&gt;:"+Double.valueOf(PERCENT * (busytime)*1.0 / (busytime + idletime)).intValue()+"%";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return "&lt;b style="background-color: #00aa00; color: white;"&gt;CPU使用率&lt;/b&gt;:"+0+"%";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (Exception ex) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ex.printStackTrace();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return "&lt;b style="background-color: #00aa00; color: white;"&gt;CPU使用率&lt;/b&gt;:"+0+"%";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;//读取cpu相关信息&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static long[] readCpu(final Process proc) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; long[] retn = new long[2];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proc.getOutputStream().close();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InputStreamReader ir = new InputStreamReader(proc.getInputStream());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LineNumberReader input = new LineNumberReader(ir);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String line = input.readLine();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (line == null || line.length() &amp;lt; FAULTLENGTH) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int capidx = line.indexOf("Caption");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int cmdidx = line.indexOf("CommandLine");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int rocidx = line.indexOf("ReadOperationCount");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int umtidx = line.indexOf("UserModeTime");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int kmtidx = line.indexOf("KernelModeTime");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int wocidx = line.indexOf("WriteOperationCount");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; long idletime = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; long kneltime = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; long usertime = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while ((line = input.readLine()) != null) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (line.length() &amp;lt; wocidx) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; continue;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 字段出现顺序：Caption,CommandLine,KernelModeTime,ReadOperationCount,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // ThreadCount,UserModeTime,WriteOperation&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String caption =substring(line, capidx, cmdidx - 1).trim();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String cmd = substring(line, cmdidx, kmtidx - 1).trim();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (cmd.indexOf("wmic.exe") &amp;gt;= 0) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; continue;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String s1 = substring(line, kmtidx, rocidx - 1).trim();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String s2 = substring(line, umtidx, wocidx - 1).trim();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (caption.equals("System Idle Process") || caption.equals("System")) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (s1.length() &amp;gt; 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; idletime += Long.valueOf(s1).longValue();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (s2.length() &amp;gt; 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; idletime += Long.valueOf(s2).longValue();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; continue;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (s1.length() &amp;gt; 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; kneltime += Long.valueOf(s1).longValue();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (s2.length() &amp;gt; 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; usertime += Long.valueOf(s2).longValue();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; retn[0] = idletime;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; retn[1] = kneltime + usertime;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return retn;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (Exception ex) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ex.printStackTrace();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } finally {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proc.getInputStream().close();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (Exception e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;&amp;nbsp;&amp;nbsp; * 由于String.subString对汉字处理存在问题（把一&lt;a name="baidusnap4"&gt;&lt;/a&gt;&lt;b style="background-color: #ff66ff; color: black;"&gt;个&lt;/b&gt;汉字视为一&lt;b style="background-color: #ff66ff; color: black;"&gt;个&lt;/b&gt;字节)，因此在 包含汉字的字符串时存在隐患，现调整如下：&lt;br /&gt;&amp;nbsp;&amp;nbsp; * @param src 要截取的字符串&lt;br /&gt;&amp;nbsp;&amp;nbsp; * @param start_idx 开始坐标（包括该坐标)&lt;br /&gt;&amp;nbsp;&amp;nbsp; * @param end_idx 截止坐标（包括该坐标）&lt;br /&gt;&amp;nbsp;&amp;nbsp; * @return&lt;br /&gt;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static String substring(String src, int start_idx, int end_idx) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; byte[] b = src.getBytes();&lt;br /&gt;&amp;nbsp;&amp;nbsp; String tgt = "";&lt;br /&gt;&amp;nbsp;&amp;nbsp; for (int i = start_idx; i &amp;lt;= end_idx; i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tgt += (char) b[i];&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; return tgt;&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;2.利用第三方的jar包：（Hyperic-hq官方网站：&lt;a href="http://www.hyperic.com/"&gt;http://www.hyperic.com&lt;/a&gt;）&lt;/p&gt;&lt;p&gt;通过Hyperic-hq产品的基础包sigar.jar来实现服务器状态数据的&lt;b style="background-color: #99ff99; color: black;"&gt;获取&lt;/b&gt;。Sigar.jar包是通过本地方法来调用操作系统API来&lt;b style="background-color: #99ff99; color: black;"&gt;获取&lt;/b&gt;系统相关数据。Windows操作系统下Sigar.jar依赖sigar-amd64-winnt.dll或sigar-x86-winnt.dll，&lt;a name="baidusnap1"&gt;&lt;/a&gt;&lt;b style="background-color: #a0ffff; color: black;"&gt;linux&lt;/b&gt; 操作系统下则依赖libsigar-amd64-&lt;b style="background-color: #a0ffff; color: black;"&gt;linux&lt;/b&gt;.so或libsigar-x86-&lt;b style="background-color: #a0ffff; color: black;"&gt;linux&lt;/b&gt;.so&lt;/p&gt;&lt;p&gt;imp&lt;wbr&gt;&lt;/wbr&gt;&lt;wbr&gt;&lt;/wbr&gt;ort &lt;b style="background-color: #ffff66; color: black;"&gt;java&lt;/b&gt;.net.InetAddress;&lt;br /&gt;imp&lt;wbr&gt;&lt;/wbr&gt;&lt;wbr&gt;&lt;/wbr&gt;ort &lt;b style="background-color: #ffff66; color: black;"&gt;java&lt;/b&gt;.net.UnknownHostException;&lt;br /&gt;imp&lt;wbr&gt;&lt;/wbr&gt;&lt;wbr&gt;&lt;/wbr&gt;ort org.hyperic.sigar.CpuInfo;&lt;br /&gt;imp&lt;wbr&gt;&lt;/wbr&gt;&lt;wbr&gt;&lt;/wbr&gt;ort org.hyperic.sigar.CpuPerc;&lt;br /&gt;imp&lt;wbr&gt;&lt;/wbr&gt;&lt;wbr&gt;&lt;/wbr&gt;ort org.hyperic.sigar.FileSystem;&lt;br /&gt;imp&lt;wbr&gt;&lt;/wbr&gt;&lt;wbr&gt;&lt;/wbr&gt;ort org.hyperic.sigar.FileSystemUsage;&lt;br /&gt;imp&lt;wbr&gt;&lt;/wbr&gt;&lt;wbr&gt;&lt;/wbr&gt;ort org.hyperic.sigar.Mem;&lt;br /&gt;imp&lt;wbr&gt;&lt;/wbr&gt;&lt;wbr&gt;&lt;/wbr&gt;ort org.hyperic.sigar.NetFlags;&lt;br /&gt;imp&lt;wbr&gt;&lt;/wbr&gt;&lt;wbr&gt;&lt;/wbr&gt;ort org.hyperic.sigar.NetInterfaceConfig;&lt;br /&gt;imp&lt;wbr&gt;&lt;/wbr&gt;&lt;wbr&gt;&lt;/wbr&gt;ort org.hyperic.sigar.NetInterfaceStat;&lt;br /&gt;imp&lt;wbr&gt;&lt;/wbr&gt;&lt;wbr&gt;&lt;/wbr&gt;ort org.hyperic.sigar.OperatingSystem;&lt;br /&gt;imp&lt;wbr&gt;&lt;/wbr&gt;&lt;wbr&gt;&lt;/wbr&gt;ort org.hyperic.sigar.Sigar;&lt;br /&gt;imp&lt;wbr&gt;&lt;/wbr&gt;&lt;wbr&gt;&lt;/wbr&gt;ort org.hyperic.sigar.SigarException;&lt;br /&gt;imp&lt;wbr&gt;&lt;/wbr&gt;&lt;wbr&gt;&lt;/wbr&gt;ort org.hyperic.sigar.SigarNotImplementedException;&lt;br /&gt;imp&lt;wbr&gt;&lt;/wbr&gt;&lt;wbr&gt;&lt;/wbr&gt;ort org.hyperic.sigar.Swap;&lt;/p&gt;&lt;p&gt;public class SysInfo {&lt;/p&gt;&lt;p&gt;&amp;nbsp;// 1.CPU资源信息&lt;/p&gt;&lt;p&gt;&amp;nbsp;// a)CPU数量（单位：&lt;b style="background-color: #ff66ff; color: black;"&gt;个&lt;/b&gt;）&lt;br /&gt;&amp;nbsp;public static int getCpuCount() throws SigarException {&lt;br /&gt;&amp;nbsp; Sigar sigar = new Sigar();&lt;br /&gt;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; return sigar.getCpuInfoList().length;&lt;br /&gt;&amp;nbsp; } finally {&lt;br /&gt;&amp;nbsp;&amp;nbsp; sigar.close();&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;}&lt;/p&gt;&lt;p&gt;&amp;nbsp;// b)CPU的总量（单位：HZ）及CPU的相关信息&lt;br /&gt;&amp;nbsp;public void getCpuTotal() {&lt;br /&gt;&amp;nbsp; Sigar sigar = new Sigar();&lt;br /&gt;&amp;nbsp; CpuInfo[] infos;&lt;br /&gt;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; infos = sigar.getCpuInfoList();&lt;br /&gt;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; infos.length; i++) {// 不管是单块CPU还是多CPU都适用&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CpuInfo info = infos[i];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("mhz=" + info.getMhz());// CPU的总量MHz&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("vendor=" + info.getVendor());// 获得CPU的卖主，如：Intel&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("model=" + info.getModel());// 获得CPU的类别，如：Celeron&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("cache size=" + info.getCacheSize());// 缓冲存储器数量&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; } catch (SigarException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;}&lt;/p&gt;&lt;p&gt;&amp;nbsp;// c)CPU的用户使用量、系统使用剩余量、总的剩余量、总的使用占用量等（单位：100%）&lt;br /&gt;&amp;nbsp;public void testCpuPerc() {&lt;br /&gt;&amp;nbsp; Sigar sigar = new Sigar();&lt;br /&gt;&amp;nbsp; // 方式一，主要是针对一块CPU的情况&lt;br /&gt;&amp;nbsp; CpuPerc cpu;&lt;br /&gt;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; cpu = sigar.getCpuPerc();&lt;br /&gt;&amp;nbsp;&amp;nbsp; printCpuPerc(cpu);&lt;br /&gt;&amp;nbsp; } catch (SigarException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; // 方式二，不管是单块CPU还是多CPU都适用&lt;br /&gt;&amp;nbsp; CpuPerc cpuList[] = null;&lt;br /&gt;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; cpuList = sigar.getCpuPercList();&lt;br /&gt;&amp;nbsp; } catch (SigarException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;&amp;nbsp;&amp;nbsp; return;&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; for (int i = 0; i &amp;lt; cpuList.length; i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; printCpuPerc(cpuList[i]);&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;}&lt;/p&gt;&lt;p&gt;&amp;nbsp;private void printCpuPerc(CpuPerc cpu) {&lt;br /&gt;&amp;nbsp; System.out.println("User :" + CpuPerc.format(cpu.getUser()));// 用户使用率&lt;br /&gt;&amp;nbsp; System.out.println("Sys :" + CpuPerc.format(cpu.getSys()));// 系统使用率&lt;br /&gt;&amp;nbsp; System.out.println("Wait :" + CpuPerc.format(cpu.getWait()));// 当前等待率&lt;br /&gt;&amp;nbsp; System.out.println("Nice :" + CpuPerc.format(cpu.getNice()));//&lt;br /&gt;&amp;nbsp; System.out.println("Idle :" + CpuPerc.format(cpu.getIdle()));// 当前空闲率&lt;br /&gt;&amp;nbsp; System.out.println("Total :" + CpuPerc.format(cpu.getCombined()));// 总的使用率&lt;br /&gt;&amp;nbsp;}&lt;/p&gt;&lt;p&gt;&amp;nbsp;// 2.内存资源信息&lt;br /&gt;&amp;nbsp;public void getPhysicalMemory() {&lt;br /&gt;&amp;nbsp; // a)物理内存信息&lt;br /&gt;&amp;nbsp; Sigar sigar = new Sigar();&lt;br /&gt;&amp;nbsp; Mem mem;&lt;br /&gt;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; mem = sigar.getMem();&lt;br /&gt;&amp;nbsp;&amp;nbsp; // 内存总量&lt;br /&gt;&amp;nbsp;&amp;nbsp; System.out.println("Total = " + mem.getTotal() / 1024L + "K av");&lt;br /&gt;&amp;nbsp;&amp;nbsp; // 当前内存使用量&lt;br /&gt;&amp;nbsp;&amp;nbsp; System.out.println("Used = " + mem.getUsed() / 1024L + "K used");&lt;br /&gt;&amp;nbsp;&amp;nbsp; // 当前内存剩余量&lt;br /&gt;&amp;nbsp;&amp;nbsp; System.out.println("Free = " + mem.getFree() / 1024L + "K free");&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; // b)系统页面文件交换区信息&lt;br /&gt;&amp;nbsp;&amp;nbsp; Swap swap = sigar.getSwap();&lt;br /&gt;&amp;nbsp;&amp;nbsp; // 交换区总量&lt;br /&gt;&amp;nbsp;&amp;nbsp; System.out.println("Total = " + swap.getTotal() / 1024L + "K av");&lt;br /&gt;&amp;nbsp;&amp;nbsp; // 当前交换区使用量&lt;br /&gt;&amp;nbsp;&amp;nbsp; System.out.println("Used = " + swap.getUsed() / 1024L + "K used");&lt;br /&gt;&amp;nbsp;&amp;nbsp; // 当前交换区剩余量&lt;br /&gt;&amp;nbsp;&amp;nbsp; System.out.println("Free = " + swap.getFree() / 1024L + "K free");&lt;br /&gt;&amp;nbsp; } catch (SigarException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;}&lt;/p&gt;&lt;p&gt;&amp;nbsp;// 3.操作系统信息&lt;/p&gt;&lt;p&gt;&amp;nbsp;// a)取到当前操作系统的名称：&lt;br /&gt;&amp;nbsp;public String getPlatformName() {&lt;br /&gt;&amp;nbsp; String hostname = "";&lt;br /&gt;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; hostname = InetAddress.getLocalHost().getHostName();&lt;br /&gt;&amp;nbsp; } catch (Exception exc) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; Sigar sigar = new Sigar();&lt;br /&gt;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; hostname = sigar.getNetInfo().getHostName();&lt;br /&gt;&amp;nbsp;&amp;nbsp; } catch (SigarException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; hostname = "localhost.unknown";&lt;br /&gt;&amp;nbsp;&amp;nbsp; } finally {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sigar.close();&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; return hostname;&lt;br /&gt;&amp;nbsp;}&lt;/p&gt;&lt;p&gt;&amp;nbsp;// b)取当前操作系统的信息&lt;br /&gt;&amp;nbsp;public void testGetOSInfo() {&lt;br /&gt;&amp;nbsp; OperatingSystem OS = OperatingSystem.getInstance();&lt;br /&gt;&amp;nbsp; // 操作系统内核类型如： 386、486、586等x86&lt;br /&gt;&amp;nbsp; System.out.println("OS.getArch() = " + OS.getArch());&lt;br /&gt;&amp;nbsp; System.out.println("OS.getCpuEndian() = " + OS.getCpuEndian());//&lt;br /&gt;&amp;nbsp; System.out.println("OS.getDataModel() = " + OS.getDataModel());//&lt;br /&gt;&amp;nbsp; // 系统描述&lt;br /&gt;&amp;nbsp; System.out.println("OS.getDescription() = " + OS.getDescription());&lt;br /&gt;&amp;nbsp; System.out.println("OS.getMachine() = " + OS.getMachine());//&lt;br /&gt;&amp;nbsp; // 操作系统类型&lt;br /&gt;&amp;nbsp; System.out.println("OS.getName() = " + OS.getName());&lt;br /&gt;&amp;nbsp; System.out.println("OS.getPatchLevel() = " + OS.getPatchLevel());//&lt;br /&gt;&amp;nbsp; // 操作系统的卖主&lt;br /&gt;&amp;nbsp; System.out.println("OS.getVendor() = " + OS.getVendor());&lt;br /&gt;&amp;nbsp; // 卖主名称&lt;br /&gt;&amp;nbsp; System.out&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .println("OS.getVendorCodeName() = " + OS.getVendorCodeName());&lt;br /&gt;&amp;nbsp; // 操作系统名称&lt;br /&gt;&amp;nbsp; System.out.println("OS.getVendorName() = " + OS.getVendorName());&lt;br /&gt;&amp;nbsp; // 操作系统卖主类型&lt;br /&gt;&amp;nbsp; System.out.println("OS.getVendorVersion() = " + OS.getVendorVersion());&lt;br /&gt;&amp;nbsp; // 操作系统的版本号&lt;br /&gt;&amp;nbsp; System.out.println("OS.getVersion() = " + OS.getVersion());&lt;br /&gt;&amp;nbsp;}&lt;/p&gt;&lt;p&gt;&amp;nbsp;// c)取当前系统&lt;b style="background-color: #880000; color: white;"&gt;进程&lt;/b&gt;表中的用户信息&lt;br /&gt;&amp;nbsp;public void testWho() {&lt;br /&gt;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; Sigar sigar = new Sigar();&lt;br /&gt;&amp;nbsp;&amp;nbsp; org.hyperic.sigar.Who[] who = sigar.getWhoList();&lt;br /&gt;&amp;nbsp;&amp;nbsp; if (who != null &amp;amp;&amp;amp; who.length &amp;gt; 0) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; who.length; i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("\n~~~~~~~~~" + String.valueOf(i)+ "~~~~~~~~~");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; org.hyperic.sigar.Who _who = who[i];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("getDevice() = " + _who.getDevice());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("getHost() = " + _who.getHost());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("getTime() = " + _who.getTime());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 当前系统&lt;b style="background-color: #880000; color: white;"&gt;进程&lt;/b&gt;表中的用户名&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("getUser() = " + _who.getUser());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; } catch (SigarException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;}&lt;/p&gt;&lt;p&gt;&amp;nbsp;// 4.资源信息（主要是硬盘）&lt;/p&gt;&lt;p&gt;&amp;nbsp;// a)取硬盘已有的分区及其详细信息（通过sigar.getFileSystemList()来获得FileSystem列表对象，然后对其进行编历）：&lt;br /&gt;&amp;nbsp;public void testFileSystemInfo() throws Exception {&lt;br /&gt;&amp;nbsp; Sigar sigar = new Sigar();&lt;br /&gt;&amp;nbsp; FileSystem fslist[] = sigar.getFileSystemList();&lt;br /&gt;&amp;nbsp; //String dir = System.getProperty("user.home");// 当前用户文件夹路径&lt;br /&gt;&amp;nbsp; for (int i = 0; i &amp;lt; fslist.length; i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; System.out.println("\n~~~~~~~~~~" + i + "~~~~~~~~~~");&lt;br /&gt;&amp;nbsp;&amp;nbsp; FileSystem fs = fslist[i];&lt;br /&gt;&amp;nbsp;&amp;nbsp; // 分区的盘符名称&lt;br /&gt;&amp;nbsp;&amp;nbsp; System.out.println("fs.getDevName() = " + fs.getDevName());&lt;br /&gt;&amp;nbsp;&amp;nbsp; // 分区的盘符名称&lt;br /&gt;&amp;nbsp;&amp;nbsp; System.out.println("fs.getDirName() = " + fs.getDirName());&lt;br /&gt;&amp;nbsp;&amp;nbsp; System.out.println("fs.getFlags() = " + fs.getFlags());//&lt;br /&gt;&amp;nbsp;&amp;nbsp; // 文件系统类型，比如 FAT32、NTFS&lt;br /&gt;&amp;nbsp;&amp;nbsp; System.out.println("fs.getSysTypeName() = " + fs.getSysTypeName());&lt;br /&gt;&amp;nbsp;&amp;nbsp; // 文件系统类型名，比如本地硬盘、光驱、网络文件系统等&lt;br /&gt;&amp;nbsp;&amp;nbsp; System.out.println("fs.getTypeName() = " + fs.getTypeName());&lt;br /&gt;&amp;nbsp;&amp;nbsp; // 文件系统类型&lt;br /&gt;&amp;nbsp;&amp;nbsp; System.out.println("fs.getType() = " + fs.getType());&lt;br /&gt;&amp;nbsp;&amp;nbsp; FileSystemUsage usage = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; usage = sigar.getFileSystemUsage(fs.getDirName());&lt;br /&gt;&amp;nbsp;&amp;nbsp; } catch (SigarException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (fs.getType() == 2)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw e;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; continue;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; switch (fs.getType()) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; case 0: // TYPE_UNKNOWN ：未知&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp; case 1: // TYPE_NONE&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp; case 2: // TYPE_LOCAL_DISK : 本地硬盘&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 文件系统总大小&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(" Total = " + usage.getTotal() + "KB");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 文件系统剩余大小&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(" Free = " + usage.getFree() + "KB");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 文件系统可用大小&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(" Avail = " + usage.getAvail() + "KB");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 文件系统已经使用量&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(" Used = " + usage.getUsed() + "KB");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; double usePercent = usage.getUsePercent() * 100D;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 文件系统资源的利用率&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(" Usage = " + usePercent + "%");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp; case 3:// TYPE_NETWORK ：网络&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp; case 4:// TYPE_RAM_DISK ：闪存&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp; case 5:// TYPE_CDROM ：光驱&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp; case 6:// TYPE_SWAP ：页面交换&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; System.out.println(" DiskReads = " + usage.getDiskReads());&lt;br /&gt;&amp;nbsp;&amp;nbsp; System.out.println(" DiskWrites = " + usage.getDiskWrites());&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; return;&lt;br /&gt;&amp;nbsp;}&lt;/p&gt;&lt;p&gt;&amp;nbsp;// 5.网络信息&lt;/p&gt;&lt;p&gt;&amp;nbsp;// a)当前机器的正式域名&lt;br /&gt;&amp;nbsp;public String getFQDN() {&lt;br /&gt;&amp;nbsp; Sigar sigar = null;&lt;br /&gt;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; return InetAddress.getLocalHost().getCanonicalHostName();&lt;br /&gt;&amp;nbsp; } catch (UnknownHostException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sigar = new Sigar();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return sigar.getFQDN();&lt;br /&gt;&amp;nbsp;&amp;nbsp; } catch (SigarException ex) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return null;&lt;br /&gt;&amp;nbsp;&amp;nbsp; } finally {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sigar.close();&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;}&lt;/p&gt;&lt;p&gt;&amp;nbsp;// b)取到当前机器的IP地址&lt;br /&gt;&amp;nbsp;public String getDefaultIpAddress() {&lt;br /&gt;&amp;nbsp; String address = null;&lt;br /&gt;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; address = InetAddress.getLocalHost().getHostAddress();&lt;br /&gt;&amp;nbsp;&amp;nbsp; // 没有出现异常而正常当取到的IP时，如果取到的不是网卡循回地址时就返回&lt;br /&gt;&amp;nbsp;&amp;nbsp; // 否则再通过Sigar工具包中的方法来&lt;b style="background-color: #99ff99; color: black;"&gt;获取&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; if (!NetFlags.LOOPBACK_ADDRESS.equals(address)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return address;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; } catch (UnknownHostException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; // hostname not in DNS or /etc/hosts&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; Sigar sigar = new Sigar();&lt;br /&gt;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; address = sigar.getNetInterfaceConfig().getAddress();&lt;br /&gt;&amp;nbsp; } catch (SigarException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; address = NetFlags.LOOPBACK_ADDRESS;&lt;br /&gt;&amp;nbsp; } finally {&lt;br /&gt;&amp;nbsp;&amp;nbsp; sigar.close();&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; return address;&lt;br /&gt;&amp;nbsp;}&lt;/p&gt;&lt;p&gt;&amp;nbsp;// c)取到当前机器的MAC地址&lt;br /&gt;&amp;nbsp;public String getMAC() {&lt;br /&gt;&amp;nbsp; Sigar sigar = null;&lt;br /&gt;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; sigar = new Sigar();&lt;br /&gt;&amp;nbsp;&amp;nbsp; String[] ifaces = sigar.getNetInterfaceList();&lt;br /&gt;&amp;nbsp;&amp;nbsp; String hwaddr = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; ifaces.length; i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NetInterfaceConfig cfg = sigar.getNetInterfaceConfig(ifaces[i]);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (NetFlags.LOOPBACK_ADDRESS.equals(cfg.getAddress())&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; || (cfg.getFlags() &amp;amp; NetFlags.IFF_LOOPBACK) != 0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; || NetFlags.NULL_HWADDR.equals(cfg.getHwaddr())) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; continue;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * 如果存在多张网卡包括虚拟机的网卡，默认只取第一张网卡的MAC地址，如果要返回所有的网卡（包括物理的和虚拟的）则可以修改方法的返回类型为数组或Collection&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * ，通过在for循环里取到的多&lt;b style="background-color: #ff66ff; color: black;"&gt;个&lt;/b&gt;MAC地址。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; hwaddr = cfg.getHwaddr();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; return hwaddr != null ? hwaddr : null;&lt;br /&gt;&amp;nbsp; } catch (Exception e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; return null;&lt;br /&gt;&amp;nbsp; } finally {&lt;br /&gt;&amp;nbsp;&amp;nbsp; if (sigar != null)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sigar.close();&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;}&lt;/p&gt;&lt;p&gt;&amp;nbsp;// d)&lt;b style="background-color: #99ff99; color: black;"&gt;获取&lt;/b&gt;网络流量等信息&lt;br /&gt;&amp;nbsp;public void testNetIfList() throws Exception {&lt;br /&gt;&amp;nbsp; Sigar sigar = new Sigar();&lt;br /&gt;&amp;nbsp; String ifNames[] = sigar.getNetInterfaceList();&lt;br /&gt;&amp;nbsp; for (int i = 0; i &amp;lt; ifNames.length; i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; String name = ifNames[i];&lt;br /&gt;&amp;nbsp;&amp;nbsp; NetInterfaceConfig ifconfig = sigar.getNetInterfaceConfig(name);&lt;br /&gt;&amp;nbsp;&amp;nbsp; print("\nname = " + name);// 网络设备名&lt;br /&gt;&amp;nbsp;&amp;nbsp; print("Address = " + ifconfig.getAddress());// IP地址&lt;br /&gt;&amp;nbsp;&amp;nbsp; print("Netmask = " + ifconfig.getNetmask());// 子网掩码&lt;br /&gt;&amp;nbsp;&amp;nbsp; if ((ifconfig.getFlags() &amp;amp; 1L) &amp;lt;= 0L) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print("!IFF_UP...skipping getNetInterfaceStat");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; continue;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NetInterfaceStat ifstat = sigar.getNetInterfaceStat(name);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print("RxPackets = " + ifstat.getRxPackets());// 接收的总包裹数&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print("TxPackets = " + ifstat.getTxPackets());// 发送的总包裹数&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print("RxBytes = " + ifstat.getRxBytes());// 接收到的总字节数&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print("TxBytes = " + ifstat.getTxBytes());// 发送的总字节数&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print("RxErrors = " + ifstat.getRxErrors());// 接收到的错误包数&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print("TxErrors = " + ifstat.getTxErrors());// 发送数据包时的错误数&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print("RxDropped = " + ifstat.getRxDropped());// 接收时丢弃的包数&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print("TxDropped = " + ifstat.getTxDropped());// 发送时丢弃的包数&lt;br /&gt;&amp;nbsp;&amp;nbsp; } catch (SigarNotImplementedException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; } catch (SigarException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print(e.getMessage());&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;}&lt;/p&gt;&lt;p&gt;&amp;nbsp;void print(String msg) {&lt;br /&gt;&amp;nbsp; System.out.println(msg);&lt;br /&gt;&amp;nbsp;}&lt;/p&gt;&lt;p&gt;&amp;nbsp;// e)一些其他的信息&lt;br /&gt;&amp;nbsp;public void getEthernetInfo() {&lt;br /&gt;&amp;nbsp; Sigar sigar = null;&lt;br /&gt;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; sigar = new Sigar();&lt;br /&gt;&amp;nbsp;&amp;nbsp; String[] ifaces = sigar.getNetInterfaceList();&lt;br /&gt;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; ifaces.length; i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NetInterfaceConfig cfg = sigar.getNetInterfaceConfig(ifaces[i]);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (NetFlags.LOOPBACK_ADDRESS.equals(cfg.getAddress())&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; || (cfg.getFlags() &amp;amp; NetFlags.IFF_LOOPBACK) != 0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; || NetFlags.NULL_HWADDR.equals(cfg.getHwaddr())) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; continue;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("cfg.getAddress() = " + cfg.getAddress());// IP地址&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .println("cfg.getBroadcast() = " + cfg.getBroadcast());// 网关广播地址&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("cfg.getHwaddr() = " + cfg.getHwaddr());// 网卡MAC地址&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("cfg.getNetmask() = " + cfg.getNetmask());// 子网掩码&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("cfg.getDescription() = "&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + cfg.getDescription());// 网卡描述信息&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("cfg.getType() = " + cfg.getType());//&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("cfg.getDestination() = "&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + cfg.getDestination());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("cfg.getFlags() = " + cfg.getFlags());//&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("cfg.getMetric() = " + cfg.getMetric());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("cfg.getMtu() = " + cfg.getMtu());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("cfg.getName() = " + cfg.getName());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println();&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; } catch (Exception e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; System.out.println("Error while creating GUID" + e);&lt;br /&gt;&amp;nbsp; } finally {&lt;br /&gt;&amp;nbsp;&amp;nbsp; if (sigar != null)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sigar.close();&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;}&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;本文来自CSDN博客，&lt;a href="http://blog.csdn.net/java_lbvs/archive/2010/01/04/5128801.aspx"&gt;http://blog.csdn.net/&lt;b style="background-color: #ffff66; color: black;"&gt;java&lt;/b&gt;_lbvs/archive/2010/01/04/5128801.aspx&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/eafy/aggbug/2045303.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/eafy/archive/2011/05/13/2045303.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/eafy/archive/2010/01/28/1658349.html</id><title type="text">url参数中传递中文</title><summary type="text">//在传递中文之前先将其转码str=encodeURI(encodeURI(str));//然后在服务器端取的时候进行解码String str=request.getParameter("str");str=java.net.URLDecoder.decode(_str,"utf-8").toString();</summary><published>2010-01-28T06:23:00Z</published><updated>2010-01-28T06:23:00Z</updated><author><name>eafy.ye</name><uri>http://www.cnblogs.com/eafy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/eafy/archive/2010/01/28/1658349.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/eafy/archive/2010/01/28/1658349.html"/><content type="text">//在传递中文之前先将其转码str=encodeURI(encodeURI(str));//然后在服务器端取的时候进行解码String str=request.getParameter("str");str=java.net.URLDecoder.decode(_str,"utf-8").toString();</content></entry><entry><id>http://www.cnblogs.com/eafy/archive/2009/04/07/1430793.html</id><title type="text">cglib介绍(转)</title><summary type="text">CGlib概述：cglib（Code Generation Library）是一个强大的,高性能,高质量的Code生成类库。它可以在运行期扩展Java类与实现Java接口。cglib封装了asm，可以在运行期动态生成新的class。cglib用于AOP，jdk中的proxy必须基于接口，cglib却没有这个限制。CGlib应用：以一个实例在简单介绍下cglib的应用。我们模拟一个虚拟的场景，关于信...</summary><published>2009-04-07T03:24:00Z</published><updated>2009-04-07T03:24:00Z</updated><author><name>eafy.ye</name><uri>http://www.cnblogs.com/eafy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/eafy/archive/2009/04/07/1430793.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/eafy/archive/2009/04/07/1430793.html"/><content type="text">CGlib概述：cglib（Code Generation Library）是一个强大的,高性能,高质量的Code生成类库。它可以在运行期扩展Java类与实现Java接口。cglib封装了asm，可以在运行期动态生成新的class。cglib用于AOP，jdk中的proxy必须基于接口，cglib却没有这个限制。CGlib应用：以一个实例在简单介绍下cglib的应用。我们模拟一个虚拟的场景，关于信...</content></entry><entry><id>http://www.cnblogs.com/eafy/archive/2009/02/23/1396607.html</id><title type="text">openfire消息包接受处理流程&amp;Openfire Plugins加载流程</title><summary type="text">一、openfire消息包接受处理流程二、Openfire Plugins加载流程</summary><published>2009-02-23T08:50:00Z</published><updated>2009-02-23T08:50:00Z</updated><author><name>eafy.ye</name><uri>http://www.cnblogs.com/eafy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/eafy/archive/2009/02/23/1396607.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/eafy/archive/2009/02/23/1396607.html"/><content type="text">一、openfire消息包接受处理流程二、Openfire Plugins加载流程</content></entry><entry><id>http://www.cnblogs.com/eafy/archive/2009/02/21/1395559.html</id><title type="text">eclipse中开发openfire</title><summary type="text">1、http://www.igniterealtime.org下载openfire 最新源码2、解压源码3、eclipse项目中新建java 项目，将openfire_src中的src 拷入src目录中4、将src和plus中的src添加build_path5、添加build和plus中的lib6、打开org.jivesoftware.openfire.starter.ServerStarter类...</summary><published>2009-02-21T12:49:00Z</published><updated>2009-02-21T12:49:00Z</updated><author><name>eafy.ye</name><uri>http://www.cnblogs.com/eafy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/eafy/archive/2009/02/21/1395559.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/eafy/archive/2009/02/21/1395559.html"/><content type="text">1、http://www.igniterealtime.org下载openfire 最新源码2、解压源码3、eclipse项目中新建java 项目，将openfire_src中的src 拷入src目录中4、将src和plus中的src添加build_path5、添加build和plus中的lib6、打开org.jivesoftware.openfire.starter.ServerStarter类...</content></entry><entry><id>http://www.cnblogs.com/eafy/archive/2009/01/21/1379489.html</id><title type="text">垃圾收集器与Java编程(转)</title><summary type="text">垃圾收集器(Garbage Collector，GC)对Java程序员来说，基本 上是透明的，但是一个优秀的Java程序员必须了解GC的工作原理、如何优化GC的性能、如何与GC进行有限的交互，因为有一些应用程序对性能要求较高，例如嵌入式系统、实时系统等，只有全面提升内存的管理效率 ,才能提高整个应用程序的性能。本篇文章首先简单介绍GC的工作原理之后，然后再对GC的几个关键问题进行深入探讨，最后提出...</summary><published>2009-01-21T07:01:00Z</published><updated>2009-01-21T07:01:00Z</updated><author><name>eafy.ye</name><uri>http://www.cnblogs.com/eafy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/eafy/archive/2009/01/21/1379489.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/eafy/archive/2009/01/21/1379489.html"/><content type="text">垃圾收集器(Garbage Collector，GC)对Java程序员来说，基本 上是透明的，但是一个优秀的Java程序员必须了解GC的工作原理、如何优化GC的性能、如何与GC进行有限的交互，因为有一些应用程序对性能要求较高，例如嵌入式系统、实时系统等，只有全面提升内存的管理效率 ,才能提高整个应用程序的性能。本篇文章首先简单介绍GC的工作原理之后，然后再对GC的几个关键问题进行深入探讨，最后提出...</content></entry><entry><id>http://www.cnblogs.com/eafy/archive/2008/12/23/1360346.html</id><title type="text">Struts2的工作机制及分析(转)</title><summary type="text">概述 本章讲述Struts2的工作原理。读者如果曾经学习过Struts1.x或者有过Struts1.x的开发经验，那么千万不要想当然地以为这一章可以跳过。实际上Struts1.x与Struts2并无我们想象的血缘关系。虽然Struts2的开发小组极力保留Struts1.x的习惯，但因为Struts2的核心设计完全改变，从思想到设计到工作流程，都有了很大的不同。Struts2是Strut...</summary><published>2008-12-23T03:09:00Z</published><updated>2008-12-23T03:09:00Z</updated><author><name>eafy.ye</name><uri>http://www.cnblogs.com/eafy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/eafy/archive/2008/12/23/1360346.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/eafy/archive/2008/12/23/1360346.html"/><content type="text">概述 本章讲述Struts2的工作原理。读者如果曾经学习过Struts1.x或者有过Struts1.x的开发经验，那么千万不要想当然地以为这一章可以跳过。实际上Struts1.x与Struts2并无我们想象的血缘关系。虽然Struts2的开发小组极力保留Struts1.x的习惯，但因为Struts2的核心设计完全改变，从思想到设计到工作流程，都有了很大的不同。Struts2是Strut...</content></entry><entry><id>http://www.cnblogs.com/eafy/archive/2008/12/10/1351670.html</id><title type="text">Freemarker caching of BeanWrapper models</title><summary type="text">页面上有好多数据是重复使用，往freemarker标签中填充数据，是比较大的一个性能瓶颈，所以项目中使用freemarker的BeanWrapper cache.使用方法修改文件1、sturts.properties 增加struts.freemarker.beanwrapperCache=true[代码]2、FreemarkerManager(org.apache.struts2.views.f...</summary><published>2008-12-10T03:06:00Z</published><updated>2008-12-10T03:06:00Z</updated><author><name>eafy.ye</name><uri>http://www.cnblogs.com/eafy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/eafy/archive/2008/12/10/1351670.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/eafy/archive/2008/12/10/1351670.html"/><content type="text">页面上有好多数据是重复使用，往freemarker标签中填充数据，是比较大的一个性能瓶颈，所以项目中使用freemarker的BeanWrapper cache.使用方法修改文件1、sturts.properties 增加struts.freemarker.beanwrapperCache=true[代码]2、FreemarkerManager(org.apache.struts2.views.f...</content></entry><entry><id>http://www.cnblogs.com/eafy/archive/2008/11/28/1342866.html</id><title type="text">java传递是引用的拷贝，既不是引用本身，更不是对象</title><summary type="text">[代码]1、首先弄清楚一个问题：Java有没有指针？ 对于在C和C++里头曾经给我们带来欢乐同时也有无限痛苦的指针，很多人宁愿它再也不要出现在Java里头。然而事实上，Java是有指针的，Java中每个对象（除基本数据类型以外）的标识符都属于指针的一种。但它们的使用受到了严格的限制和防范，在&lt;Thinking in Java&gt;一书中称它们为句柄。 2、传递句柄 将句柄传递进入一个方法时...</summary><published>2008-11-28T02:04:00Z</published><updated>2008-11-28T02:04:00Z</updated><author><name>eafy.ye</name><uri>http://www.cnblogs.com/eafy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/eafy/archive/2008/11/28/1342866.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/eafy/archive/2008/11/28/1342866.html"/><content type="text">[代码]1、首先弄清楚一个问题：Java有没有指针？ 对于在C和C++里头曾经给我们带来欢乐同时也有无限痛苦的指针，很多人宁愿它再也不要出现在Java里头。然而事实上，Java是有指针的，Java中每个对象（除基本数据类型以外）的标识符都属于指针的一种。但它们的使用受到了严格的限制和防范，在&lt;Thinking in Java&gt;一书中称它们为句柄。 2、传递句柄 将句柄传递进入一个方法时...</content></entry><entry><id>http://www.cnblogs.com/eafy/archive/2008/09/26/1299700.html</id><title type="text">open session and Hibernate事务处理机制</title><summary type="text">相关文章: Hibernate入门 - Transaction 使用OpenSessionInView模式时的一个异常问题解决方法 推荐圈子: 青岛javaeye 更多相关推荐 在没有使用Spring提供的Open Session In View情况下，因需要在service(or Dao)层里把session关闭，所以lazy loading 为true的话，要在应用层内把关系集合都初始化，如...</summary><published>2008-09-26T09:02:00Z</published><updated>2008-09-26T09:02:00Z</updated><author><name>eafy.ye</name><uri>http://www.cnblogs.com/eafy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/eafy/archive/2008/09/26/1299700.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/eafy/archive/2008/09/26/1299700.html"/><content type="text">相关文章: Hibernate入门 - Transaction 使用OpenSessionInView模式时的一个异常问题解决方法 推荐圈子: 青岛javaeye 更多相关推荐 在没有使用Spring提供的Open Session In View情况下，因需要在service(or Dao)层里把session关闭，所以lazy loading 为true的话，要在应用层内把关系集合都初始化，如...</content></entry></feed>
