首先先上代碼
SigerVO vo = new SigerVO();
try {
Sigar sigar = new Sigar();
for (Long pid : sigar.getProcList()) {
try {
Ps ps = new Ps();
List<String> list = ps.getInfo(sigar, pid);
for(int i = 0; i < list.size(); i++){
System.out.println(list.get(i));
}
} catch (SigarException e) {
}
}
ps.getInfo(sigar, pid)這裏面返回的就是所有的進程信息,但是這個公司在maven倉庫裏面沒有源碼以及doc。當然蛋疼的API裏面也沒有相關描述,這裏的話通過反編譯以及結合API裏面有限的說明對這個返回值裏面的含義進行說明
返回的是一個字符串類型的數組,各個下標的含義如下
[0]進程ID
[1]進程所屬用戶名,取得不到的話返回的是???並不是亂碼
[2]啓動時間
[3]進程的虛擬內存
[4]進程的常駐內存
[5]進程的共享內存(如果這一塊取不到的話只會返回一個???所以內存佔用狀態取不到數組長度會少2,所以要小心越界)
[6]進程狀態(SLEEP = ‘S’;RUN = ‘R’;STOP = ‘T’;ZOMBIE = ‘Z’;IDLE = ‘D’;)
[7]總時長
[8]進程所屬詳細信息