Java:如何扫描 ide 输出中的最高数字?
Posted
技术标签:
【中文标题】Java:如何扫描 ide 输出中的最高数字?【英文标题】:Java: How to scan ide output for the highest number? 【发布时间】:2017-03-01 13:43:52 【问题描述】:所以我有这段代码,它打印出从任务管理器到 netbeans 中的 ide 的运行进程,但我想扫描进程的输出,以便我可以列出当时我的 PC 上运行最高的进程?
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
【问题讨论】:
好吧,如果你在 inside netbeans 运行这个,你最好不要杀死它,否则你将无法再看到列表......无论如何,在您的程序中,您有tasklist
行。将其解析为有意义的数据,将其放入对象列表中,对其进行排序,然后对排序后的列表执行任何您需要的操作。
并提示:请随时通过 cmets 对我的答案提供反馈。最近几天我经常看到一些新手提出问题......并且永远不会回来。不评论,不赞成,不接受。所以,请考虑提供某种形式的反馈 ;-)
例如,现在您已经获得了支持代表,您可以支持...并发表评论 ;-)
【参考方案1】:
您迭代该数据;并收集您感兴趣的那些属性;例如名称、PID,当然还有内存使用情况。
你可能会创建一个类似的类
public class RunningProcessInfo
private final String name ...
public RunningProcessInfo(String name, int pid, int memUsage)
换句话说:您编写的解析代码将一行作为
chrome.exe 3464 控制台 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 会话...
【讨论】:
感谢您的帮助和快速响应!您对迭代我的数据以收集属性有什么建议吗? 我增强了关于“循环”部分的答案(因为它已经存在)。解析,你可以在这里得到想法 ***.com/questions/11871520/… (你可以使用扫描仪;只是不在 System.in 中;而是在你的文件中)或者你使用标记器:***.com/questions/691184/… ... 很多选项;由你决定。所以,请退后一步,先消化一下;当你有一个非常具体的问题时......写一个新的。以上是关于Java:如何扫描 ide 输出中的最高数字?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 14x14 numpy 矩阵中找到 10 个最高数字的索引? [复制]