Я не знаю ничего, о чем я знаю в API JDK, который может запрашивать процессы операционной системы хоста. Следовательно, единственный вариант, который я могу придумать, - это использовать класс ProcessBuilder
для выполнения команды ОС хоста.
Поскольку вы указываете, что ваша ОС - Windows, следующие Команда * PowerShell выведет имя процесса и использование памяти выбранными вами процессами.
Get-Process | Where-Object {$_.ProcessName -in 'MySQL','MongoDB','Neo4j'} | Select-Object -Property 'ProcessName','WorkingSet' | Format-Table -HideTableHeaders
Обратите внимание, что я не уверен в именах процессов, потому что я не использую никакие из MySQL, MongoDB или Neo4j . Я предполагаю, что вы знаете правильные имена процессов, поэтому не забудьте исправить их в приведенной выше команде перед ее запуском.
В приведенном ниже коде используется ProcessBuilder
для выполнения указанной выше команды [PowerShell] и перенаправления вывода команды к System.out
import java.io.IOException;
import java.lang.ProcessBuilder;
public class PrcBldT2 {
public static void main(String[] args) {
ProcessBuilder pb = new ProcessBuilder("C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
"Get-Process | Where-Object {$_.ProcessName -in 'eclipse','oracle'} | Select-Object -Property 'ProcessName','WorkingSet' | Format-Table -HideTableHeaders");
pb.redirectError(ProcessBuilder.Redirect.INHERIT);
pb.redirectOutput(ProcessBuilder.Redirect.INHERIT);
try {
Process p = pb.start();
int result = p.waitFor();
System.out.println("Exit status = " + result);
}
catch (IOException | InterruptedException x) {
x.printStackTrace();
}
}
}