Javaを使用して、現在実行中のJava仮想マシンが使用するCPUの割合を取得しようとしています。私の研究は、com.sun.management.OperatingSystemMXBean
クラスの使用を指摘しています。OperatingSystemMXBeanを使用してCPU使用率を取得する
import java.lang.management.ManagementFactory;
import com.sun.management.OperatingSystemMXBean;
public class TestClass {
public static void main (String[] args) {
OperatingSystemMXBean bean = (com.sun.management.OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
System.out.println(bean.getProcessCpuLoad());
System.out.println(bean.getSystemCpuLoad());
}
}
二台のマシン上でこれをテストした後、私は両方の呼び出しのための-1.0
の結果を得て停止することはできません。オンラインの例に続いて、私は次のように書きました。私は64ビットと32ビットのJava 7と6の両方をさまざまな方法で使ってこのコードを実行しようとしました。それでも、私が得るすべては-1.0
、according to the Javadocsのプリントアウト、私はここで行うには他に何を知らない
All values betweens 0.0 and 1.0 are possible depending of the activities going on in the system. If the system recent cpu usage is not available, the method returns a negative value.
です。 CPU負荷を得ることは非常に重要です。Sigarのような別のライブラリを使用しないでください。誰もがこの勧告を持っているか、あるいはこの問題の洞察を持っていますか?
感謝を助けることができますが、私は実行していることを観察しましたこのコードは、CPU使用率を30〜40%向上させます。これは、このコードを実行するたびにCPU使用率が増加することを意味します。 –
@Shashankこのコードは、CPU使用率情報の取得の遅れを示すためのものです。実際のシステムでは、この呼び出しを無限ループで行うべきではありません。アプリケーションが実行されてから数分後には、ユースケースごとに1回だけで十分です。 – Kon
このコードを1〜2秒間実行しても、CPU使用率が増加します。 –