Şu anda çalışan Java Sanal Makinesi tarafından kullanılan CPU yüzdesini almak için Java'yı kullanmaya çalışıyorum. Araştırmam beni com.sun.management.OperatingSystemMXBean
sınıfını kullanmamı işaret etti.CPU kullanımı için OperatingSystemMXBean'ı kullanma
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());
}
}
iki makinelerde bu test ettikten sonra, ben her iki aramalar için -1.0
sonucunu elde duramazsınız: Online örnekler ardından, aşağıdaki yazdım. Bu kodu, Java 7 ve 6'nın 64 ve 32-bit sürümlerini çeşitli yöntemlerle çalıştırmayı denedim. Yine de, elime -1.0
, according to the Javadocs dışında bir baskı, burada yapacak başka bilmiyorum
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.
olduğunu. CPU yükünün alınması kritik ve Sigar gibi başka bir kütüphaneyi kullanmaktan kaçınmak istiyorum. Herhangi bir tavsiyede bulunabilecek veya bu problemle ilgili herhangi bir kavrayışınız var mı?
Teşekkür yardımcı olabilir ama çalışan gözlemiştir: benim makinede ~ 2 saniye sonra aşağıdaki değişikliği ile kod çalıştırma
kullanım bilgilerini üretmeye başlayacak Bu kod CPU kullanımını% 30-40 artırır. Bu, bu kodu çalıştırdığımızda her zamankinden daha fazla CPU Kullanımı elde ettiğimiz anlamına gelir –
@Shashank Bu kod, yalnızca CPU kullanım bilgilerinin elde edilmesindeki gecikmeyi göstermek anlamına geliyordu. Gerçek bir sistemde, bu çağrıyı sonsuz bir döngüde yapmamalısınız. Uygulamanın birkaç dakikasından sonra, kullanım başına bir kez yeterlidir. – Kon
Bu kodu 1-2 saniye boyunca çalıştırdığınızda bile CPU kullanımı artar. –