首先先上代码
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]进程所属详细信息
博客针对sigar中ps.getInfo(sigar, pid)返回的进程信息进行解析。该方法在maven仓库无源码和doc,API也缺乏相关描述。通过反编译和有限说明,阐述了返回的字符串数组各下标的含义,如进程ID、用户名、启动时间等,还提醒了内存占用状态取不到时的数组越界问题。
19

被折叠的 条评论
为什么被折叠?



