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