Knowing which java.exe process to kill on a windows machine当基于Java的应用程序在Windows计算机上开始出现异常时,如果您无法正常退出该应用程序,则希望能够在任务管理器中终止该进程。 大多数时候,我的机器上运行着多个基于Java的应用程序。 有没有比随机杀死java.exe进程更好的方法,希望最终找到正确的应用程序? 编辑:感谢所有向我指出Sysinternal的Process Explorer的人-正是我想要的!
运行 确定您要终止的任务的PID。然后使用命令:
消除行为异常的过程。 下载Sysinternal的Process Explorer。它是一个任务管理器,比Windows自己的管理器功能强大得多。 它的功能之一是您可以看到每个进程正在使用的所有资源(例如注册表项,硬盘目录,命名管道等)。因此,浏览每个java.exe进程所拥有的资源可能有助于您确定要杀死的资源。我通常通过查找使用某个日志文件目录的目录来查找。 如果您无法运行像ProcessExplorer这样的GUI应用程序,并且正在寻找进程的"命令行"参数,则可以通过命令行使用" wmic"。例如:
如果要查找特定过程,可以执行以下操作:
这样的输出将为您显示进程(如" java")的所有命令行参数。 在JDK中使用jps将为您提供更多信息。使用-m,-l和-v选项显示更多信息。
如果您使用的是Java 6,请从JDK bin目录尝试 您是否尝试过使用SysInternals的Process Explorer?它可以更好地了解流程中正在运行的内容。可从此处免费在线获得:http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx 您可以尝试打开W??indows任务管理器,转到"应用程序"选项卡,右键单击该应用程序,然后选择"转到进程"。这将在"过程"选项卡中自动突出显示适当的过程。
如果您要开发软件,请使用Java启动器。我使用了我的一些应用程序[Exe4j] [http://www.ej-technologies.com/products/exe4j/overview.html],并且效果很好。启动应用程序时,Windows任务管理器中将其列为" myserverapp.exe"或" myapp"。 如果您大致了解系统上的各种Java进程是什么,则也可以通过查看任务管理器中的所有列,而不是使用第三方工具来做出相当不错的猜测。在"进程"选项卡中,使用"视图"->"选择列",然后添加PID,CPU时间,VM大小和线程数。大致了解该流程在做什么,应该有助于缩小范围。 例如,在客户端服务器应用程序中,服务器可能会使用更多的内存,更多的线程并使用更多的CPU时间,因为它已经运行了更长的时间。如果您因为进程卡死而终止了进程,那么它现在可能只是在使用更多的CPU。 MAX Java堆内存通常直接反映在VM Size中。因此,如果使用-Xmx标志,则设置较大的进程将具有较大的VM大小。 如果应用程序根本没有响应,那么Process Explorer是一个不错的选择。 如果这是一种响应,但又不至于死亡,有时会调出任务管理器,然后在Java进程上移动另一个对话框,这将为您提供线索。您正在寻找占用cpu周期重绘的Java进程。 使用ProcessExplorer并将鼠标悬停在Java进程上将显示命令行。 我建议从Sysinternals下载Process Explorer,然后更近地看一下不同的java.exe进程,这样您可以更好地了解要杀死哪个进程。 http://technet.microsoft.com/zh-cn/sysinternals/bb896653.aspx 它非常直观,您可以找到java.exe进程,然后右键单击并转到其属性,从中可以看到它们的命令行,创建时间等,可以帮助您找到要杀死的进程。 希望能帮助到你。 |