簡體   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