Java: 如何扫描 ide 输出的最大数字?

Java: How to scan ide output for the highest number?

所以我有这段代码打印出从任务管理器到 netbeans 中的 ide 的 运行 进程,但我想扫描进程的输出,以便我可以列出最高的 运行 当时我的电脑上有进程吗?

public static void main(String[] args) throws IOException {
  try {
   String tasklist;
   Process p = Runtime.getRuntime().exec
    (System.getenv("windir") +"\system32\"+"tasklist.exe");
    try (BufferedReader input = new BufferedReader(new   InputStreamReader(p.getInputStream()))) {
      while ((tasklist = input.readLine()) != null) {
      System.out.println(tasklist); //<-- Parse data here.
  }
}
} catch (IOException err) {
  err.printStackTrace();
} 
}

例如,这会给我以下输出,如果我想杀死 netbeans,因为它 运行 超过 500,000k,我该怎么做?

Image Name                     PID Session Name        Session    Mem Usage

chrome.exe                    3464 Console                    3    159,672 K
netbeans64.exe                3664 Console                    3    592,216 K
chrome.exe                    3808 Console                    3    384,556 K
java.exe                      2040 Console                    3     36,732 K
tasklist.exe                  2208 Console                    3      6,196 K

你迭代那个数据;并收集您感兴趣的那些属性;例如名称、PID,当然还有内存使用情况。

您可能会创建一个 class 喜欢

public class RunningProcessInfo {
  private final String name ...

  public RunningProcessInfo(String name, int pid, int memUsage) {

换句话说:您编写的解析代码将一行作为

chrome.exe 3464 Console 3 159,672 K

并把它变成

new RunningProcessInfo("chrome.exe", 3464, 159672)

(通过解析输入的字符串;并将“3464”等字符串转换为数字等)。

意思是:你将System.out.println(tasklist);行替换为

行中的内容
processInfos.add( parseLine(tasklist) );

其中 processInfos 是一些 ArrayList<RunningProcessInfo>parseLine() 是采用单行并获取数据以构建新的 RunningProcessInfo 对象的方法。

您将这些对象收集在一个列表中。然后迭代该列表以查找满足特定条件的所有对象。

最后,您使用另一个进程构建器发送一个命令来终止您打算终止的那些 PID(请参阅 here 以了解如何执行此操作的示例)。当然,您要注意 - 因为您肯定不想在该会话是 运行 您的程序时终止您的 netbeans 会话 ...