日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

正确地kill java历程

發(fā)布時(shí)間:2023/12/2 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 正确地kill java历程 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

正確地kill java歷程

www.MyException.Cn???發(fā)布于:2012-06-27 14:20:08???瀏覽:4次 正確地kill java進(jìn)程

在linux/unix下,你會(huì)怎么中止一個(gè)java進(jìn)程?
你可能會(huì)回答 kill -9 pid,這是一種在多數(shù)情況下正確的做法。不過(guò),這種方式過(guò)于暴力,如果用戶對(duì)環(huán)境不熟悉,很容易造成致命的后果。
本文將分析kill -9產(chǎn)生問(wèn)題的原因,并給出另一種標(biāo)準(zhǔn)的kill方式。

標(biāo)準(zhǔn)中斷信號(hào)

在Linux信號(hào)機(jī)制中,存在多種進(jìn)程中斷信號(hào)(Linux信號(hào)列表)。其中比較典型的有 SIGNKILL(9) 和 SIGNTERM(15).

SIGNKILL(9) 和 SIGNTERM(15) 的區(qū)別在于:
SIGNKILL(9) 的效果是立即殺死進(jìn)程. 該信號(hào)不能被阻塞, 處理和忽略。
SIGNTERM(15) 的效果是正常退出進(jìn)程,退出前可以被阻塞或回調(diào)處理。并且它是Linux缺省的程序中斷信號(hào)。

由此可見,SIGNTERM(15) 才是理論上標(biāo)準(zhǔn)的kill進(jìn)程信號(hào)。
那使用 SIGNKILL(9) 又有什么錯(cuò)呢?

SIGNKILL(9) 帶來(lái)的問(wèn)題

先看一段程序

/*** Shutdown Hook Presentation** @author Ken Wu*/ public class ShutdownHookTest {private static final void shutdownCallback() {System.out.println("Shutdown callback is invoked.");}public static void main(String[] args) throws InterruptedException {Runtime.getRuntime().addShutdownHook(new Thread() {@Overridepublic void run() {shutdownCallback();}});Thread.sleep(10000);}}

在上面這段程序中,我使用Runtime為當(dāng)前java進(jìn)程添加了一個(gè)ShutdownHook,它的作用是在java正常退出時(shí),執(zhí)行shutdownCallback()這個(gè)回調(diào)方法。
此時(shí),如果你試驗(yàn)過(guò)在java進(jìn)程未自動(dòng)退出前,執(zhí)行 kill -9 pid,即發(fā)送 SIGNKILL 信號(hào),會(huì)發(fā)現(xiàn)這個(gè)回調(diào)接口是不會(huì)被執(zhí)行的。這是SIGNKILL信號(hào)起的作用。

對(duì)于我這個(gè)簡(jiǎn)單的測(cè)試用例來(lái)說(shuō),不被執(zhí)行也無(wú)大礙。但是,如果你的真實(shí)系統(tǒng)中有需要在java進(jìn)程退出后,釋放某些資源。
而這個(gè)釋放動(dòng)作,因?yàn)镾IGNKILL被忽略了,那就可能造成一些問(wèn)題。

所以,推薦大家使用標(biāo)準(zhǔn)的kill進(jìn)程方式,即 kill -15 pid。


總結(jié)

以上是生活随笔為你收集整理的正确地kill java历程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。