知道哪个java.exe进程杀死一台Windows机器

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

编辑:谢谢所有指向Sysinternal的Process Explorer的人 – 正是我在找的!

下载Sysinternal的Process Explorer 。 这是一个比Windows自己的经理更强大的任务pipe理器。

其中一个特点是,您可以看到每个进程正在使用的所有资源(如registry项,硬盘目录,命名pipe道等)。 所以,浏览每个java.exe进程所拥有的资源可能会帮助你确定你想要杀死的那个。 我通常通过查找正在使用某个日志文件目录的东西来找出问题。

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

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

 taskkill /PID <pid> 

杀死这个行为不端的行为

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

 wmic PROCESS get Processid,Caption,Commandline 

如果你想寻找一个特定的过程,你可以这样做:

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

这个输出将显示所有像“java”这样的进程的命令行参数。

在JDK中使用jps会给你更多的信息。 更多信息显示-m,-l和-v选项。

你有没有尝试从SysInternals使用Process Explorer? 它可以更好地了解过程中运行的内容。 这里免费在线提供: http : //technet.microsoft.com/en-us/sysinternals/bb896653.aspx

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

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

如果你正在开发软件:使用Java启动器。 我用了一些我的应用程序[Exe4j] [ http://www.ej-technologies.com/products/exe4j/overview.html%5D ,它工作得很好。 当应用程序启动时,在Windows任务pipe理器中将其列为例如“myserverapp.exe”或“myapp”。 还有其他的逍遥球(不知道他们的心),其中很less可能是免费的。

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

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

这是非常直观的,你可以findjava.exe进程,并右键单击并转到它们的属性,从那里你可以看到他们的命令行,创build时间等,这可以帮助你find你想要杀死的进程。

希望能帮助到你。

使用ProcessExplorer并hover在Java进程上将显示命令行。

如果应用程序根本没有响应,那么Process Explorer是一个不错的select。

如果是响应,但不会死亡,有时会提出任务pipe理器,然后在java进程上移动另一个对话框会给你一个线索。 正在占用cpu周期来重绘的java进程就是你正在寻找的那个进程。

如果您大致了解系统上的各种Java进程是什么,那么您可以通过查看任务pipe理器中的所有列来做出相当好的猜测,而不是使用第三方工具。 从“进程”选项卡中,使用“查看” – >“select列”并添加PID,CPU时间,VM大小和线程数。 大致了解过程在做什么应该有助于缩小范围。

例如,在客户端 – 服务器应用程序中,服务器可能会使用更多的内存,拥有更多的线程,并使用更多的CPU时间,因为它运行的时间更长。 如果因为卡住而导致程序死机,现在可能只是使用更多的CPU。

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