我正在使用Sigar来获取应用程序服务器中当前运行的JVM的CPU使用情况,并将其存储为此数据的历史视图,但我总是得到0%的CPU百分比。使用Sigar API获取JVM CPU使用率
与此同时,我保持visualVM打开以监视CPU使用情况,并且我看到CPU使用visualVM定期更改,而它总是使用Sigar报告0%。
这里是我米周期性运行的代码:
Sigar sigar = new Sigar();
ProcCpu cpu = null;
long pId = sigar.getPid(); // This one gives me the same process ID that I see in visualVM
try {
cpu = sigar.getProcCpu(pId);
}
catch (SigarException se) {
se.printStackTrace();
}
System.out.print(cpu.getPercent());
此代码总是给出0%。
我在做什么错这是这种情况?我如何才能让Sigar显示CPU使用情况,类似于VisualVM中显示的使用情况?
我打过电话后getProcCpu(PID)加入
cpu.gather(sigar, pId);
,但我不断收到只有两个值(0.0和9.08729312E-315),即使我不停的增长和服务器上的负荷...
谢谢你!顺便说一句,'TOTAL_TIME_UPDATE_LIMIT'应该至少1秒? – Alvaro
@Alvaro不需要。它取决于目标参数真正更新的频率。如果您将“TOTAL_TIME_UPDATE_LIMIT”设置得太低,则会在输出中看到类似saw功能的内容。 –
我怎么知道他们多久更新一次?现在我将它设置为1,并且我的值超过0. – Alvaro