2016-03-22 14 views
0

Ich habe im Internet nach einer Möglichkeit in Java zu finden, herauszufinden, wie viel CPU meine Anwendung braucht, aber leider konnte keine Lösung finden. Die meisten Leute beziehen sich auf "OperatingSystemMXBean", das auf Plattformen wie Linux, aber nicht auf Windows funktioniert. Meine Anwendung läuft auf mehreren Betriebssystemen, aber meistens auf Windows. Gibt es eine Möglichkeit, die CPU-Nutzung einer Java-Anwendung in derselben Runtime zu ermitteln, die plattformunabhängig ist oder mehrere Plattformen unterstützt, einschließlich Windows, Mac und Linux?Wie herauszufinden, die CPU-Nutzung eines Java-Prozesses in Java

Dank
Baschdi

+0

Sie könnten die Antwort hier: http://stackoverflow.com/questions/16840594/finding-the-average-cpu-usage-for-windows-machine-in-java –

Antwort

-1

Das funktioniert schön auf Windows 10. Measuring cpu util von skype:

c:\Windows\system32\typeperf "\Process(Skype)\% processor time" 
+0

Sorry, aber ich für eine gefragt Plattformunabhängiger Weg, um die CPU-Nutzung einer Java-Anwendung in Java herauszufinden. Das ist nicht ruhig die Antwort, die ich suchte – Basti

1

ich mit Ihrer Aussage nicht zustimmen. OperatingSystemMXBean ist unter Windows verfügbar. Nur ist es ein bisschen versteckt. Seien Sie vorsichtig mit dem Paketimport. Es ist nicht die Standardeinstellung von Eclipse.

import java.lang.management.ManagementFactory; 
import com.sun.management.OperatingSystemMXBean; 

public class Test { 

public static void main(String[] args) { 
    OperatingSystemMXBean operatingSystemMXBean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean(); 
    System.out.println(operatingSystemMXBean.getProcessCpuLoad()); 
}} 

Wenn Sie diesen Auszug ausführen, erhalten Sie wahrscheinlich 0.0. Es ist keine Fehlfunktion. Es ist nur ein sehr leichtes Programm und die CPU-Last kann eine Weile dauern, um berechnet zu werden. Sie könnten -1 bei ersten Aufrufen erhalten. Probieren Sie es in Ihrer App aus und stellen Sie den Wert in verschiedenen Zeitpunkten wieder her.

Wenn ich mich nicht irre, ist diese Klasse in rt.jar enthalten. Möglicherweise treten beim Importieren des Pakets mit Eclipse IDE einige Probleme auf. Hier finden Sie die Erklärung und wie Sie es beheben können. Why is access restricted to jre6/lib/rt.jar for OperatingSystemMxBean?

+0

Dies funktionierte gut für Windows. Danke für die Antwort. Irgendwelche Vorschläge zu den anderen Betriebssystemen? Ich muss mindestens Windows, Mac und Linux unterstützen. Ist com.sun.management.OperatingSystemMXBean auch auf diese zugreifbar und funktioniert es? Abgesehen davon, dass ich jdk8 verwende, um dieses Projekt zu erstellen, habe ich nicht einmal die Einschränkung bekommen. – Basti

+0

Die Einschränkung erscheint nur als Warnung, wenn Sie Ihren Code mit Eclipse IDE entwickeln. Ich denke, dass diese Bohne in diesen operativen Systemen verfügbar ist. Ich habe es in Unix richtig getestet, aber nicht in Mac, aber es ist in der Java-Laufzeit enthalten. Wenn Sie Java-Code ausführen können, haben Sie es verfügbar. – RubioRic