首先先上代码
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]进程所属详细信息