繁体   English   中英

如何杀死一个悬空的Java程序(在Windows中)?

[英]How can I kill a Java program that is left hanging (in Windows )?

假设在Java中,我有一个简单的Echo Client / Server对。 我启动了Server进程,但实际上从未启动过Client进程。

我想要做的是拥有第三个程序(称为“父程序”),该程序将在闲置30秒后自动终止该Server程序。

我可以使用Powershell来做到这一点吗? 还是我需要使用C或其他程序?

是的,只要您有一个好的方法即可:1)唯一标识服务器进程2)确定服务器空闲

如果永远不会有两个(或更多)服务器进程实例,则可以按名称标识该进程(确保您的进程具有唯一的名称!)

确定服务器处于空闲状态可能很棘手(因此,在不使用“父”进程的情况下,实现服务器停止自身的注释)。 但是,如果服务器处于活动状态时服务器占用大量内存或CPU,则可以利用它来区分空闲还是繁忙。 您可以使用get-process (gps)来确定进程当前的CPU和内存使用情况。 诀窍是要知道当前空闲状态空闲了多长时间。 为了可靠地做到这一点,您需要比使用服务器处理请求更频繁地轮询gps 否则,您可以在服务器繁忙之前进行轮询,然后在服务器繁忙之前进行轮询,然后在服务器空闲时再次进行轮询。 但是您会认为它一直都是闲置的。

您可以通过让服务器在知道空闲30秒后更改某些内容来避免上述难题,例如窗口标题。 (但是,如果这样做,为什么不让服务器自行终止呢?)

一旦PS脚本确定服务器处于空闲状态,则get-process -name yourServerProcess|stop-process将停止服务器进程。 指定“ yourServerProcess”,结尾不带.EXE。 如果出现权限错误,请以管理员身份运行PS。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM