知道在Windows机器上杀死哪个java.exe进程

时间:2008-09-15 12:41:14

标签: java windows

当基于java的应用程序在Windows机器上开始出错时,如果无法正常退出应用程序,则希望能够终止任务管理器中的进程。大多数情况下,我的机器上运行的应用程序不止一个。有没有更好的方法,而不是随机杀死java.exe进程,希望你最终能够找到正确的应用程序?

编辑:感谢所有向我指出Sysinternal的Process Explorer的人 - 正是我正在寻找的!

12 个答案:

答案 0 :(得分:54)

运行jps -lv,显示所有正在运行的Java进程的PID和命令行。

确定要杀死的任务的PID。然后使用命令:

taskkill /PID <pid>

杀死行为不端的过程。

答案 1 :(得分:33)

下载Sysinternal's Process Explorer。它是一个比Windows自己的经理更强大的任务管理器。

其中一个功能是您可以看到每个进程正在使用的所有资源(如注册表项,硬盘目录,命名管道等)。因此,浏览每个java.exe进程所拥有的资源可能会帮助您确定要杀死的资源。我通常会通过查找使用某个日志文件目录的那个来找到它。

答案 2 :(得分:31)

如果您无法运行ProcessExplorer之类的GUI应用程序并且您正在查找进程的“命令行”参数,那么您可以通过命令行使用“wmic”。例如:

wmic PROCESS get Processid,Caption,Commandline

如果您想查找特定流程,可以执行以下操作:

wmic PROCESS where "name like '%java%'" get Processid,Caption,Commandline

此输出将显示“java。”等进程的所有命令行参数。

答案 3 :(得分:7)

在JDK中使用jps将为您提供更多信息。使用-m,-l和-v选项显示更多信息。

答案 4 :(得分:6)

您是否尝试过使用SysInternals的Process Explorer?它可以更好地了解流程中的运行情况。可在线免费在线获取:http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

答案 5 :(得分:6)

如果您使用的是Java 6,请从JDK bin目录中尝试jvisualvm。

答案 6 :(得分:4)

您可以尝试打开W​​indows任务管理器,转到“应用程序”选项卡,右键单击应用程序,然后选择“转到进程”。这将自动突出显示“进程”选项卡中的相应过程。

答案 7 :(得分:2)

如果您正在开发软件:使用java-launcher。我用了一些应用程序[Exe4j] [http://www.ej-technologies.com/products/exe4j/overview.html],它运行得很好。应用程序启动时,它在Windows任务管理器中列为例如“myserverapp.exe”或“myapp”。 还有其他的lauchers(心里不知道),其中很少也可能是免费的。

答案 8 :(得分:1)

我建议从Sysinternals下载Process Explorer并更密切地查看不同的java.exe进程,这样你就可以更好地了解要杀死哪一个。

http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

它非常直观,您可以找到java.exe进程并右键单击并转到它们的属性,从那里您可以看到它们的命令行,创建时间等,它们可以帮助您找到要杀死的进程。 / p>

希望它有所帮助。

答案 9 :(得分:1)

使用ProcessExplorer并将鼠标悬停在Java进程上将显示命令行。

答案 10 :(得分:1)

如果应用程序根本没有响应,则Process Explorer是一个不错的选择。

如果它有点响应,但没有死亡,有时会启动任务管理器,然后在java进程上移动另一个对话框会给你一个线索。占用cpu周期重绘的java进程是你正在寻找的。

答案 11 :(得分:1)

如果您大致了解系统中的各种java进程,那么通过查看任务管理器中的所有列,您也可以做出相当不错的第三方工具。从“流程”选项卡中,使用“查看” - >选择“列”并添加PID,CPU时间,VM大小和线程计数。大致了解流程正在做什么应该有助于缩小范围。

例如,在客户端 - 服务器应用程序中,服务器可能会使用更多内存,拥有更多线程,并且由于运行时间更长,因此占用了更多CPU时间。如果你因为它被卡住而导致一个进程被终止,那么可能现在只是使用更多的CPU。

MAX java堆内存通常直接反映在VM Size中。因此,如果您使用-Xmx标志,则具有较大设置的进程将具有更大的VM大小。