Ich versuche, Daten der RAM-und CPU-Auslastung eines Prozesses in Windows zu sammeln. Genauer gesagt, muss ich zwei Prozesse unterscheiden (die denselben Namen haben können) oder die Informationen des Prozesses direkt abrufen.Abrufen der RAM/CPU-Auslastung eines bestimmten Prozesses in Java
Zum Beispiel kann ich brauche Daten aus dem Prozess X zu sammeln, das die gleichen Namen wie Prozess Y. kann ich tasklist.exe
dafür bin mit:
String line;
Process process = Runtime.getRuntime().exec("tasklist.exe");
BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream()));
while ((line = input.readLine()) != null) {
if (line.startsWith("java.exe")) // I only want the processes that have 'java.exe' for a name.
System.out.println(line);
}
Laufen gibt mir zwei verschiedene Verfahren, mit Derselbe Name:
java.exe 28912 Console 9 18,664 K
java.exe 36388 Console 9 19,896 K
In diesem Fall möchte ich nur Informationen aus dem zweiten Prozess sammeln. Ich würde denken, dass ich die PID als eine Kennung verwenden könnte, aber es scheint, dass jeder Lauf dieses Programms die PID der oben gezeigten Prozesse ändert.
Die Frage: Wie kann ich Daten aus dem gleichen Prozess mehrere Male sammeln, obwohl es ein Pendant mit dem gleichen Namen hat? (Wie kann ich wissen, welches ist was, wenn ich wieder tasklist
laufen lasse?)