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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

打破冷漠僵局文章_研究僵局–第2部分

發(fā)布時間:2023/12/3 编程问答 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 打破冷漠僵局文章_研究僵局–第2部分 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

打破冷漠僵局文章

調(diào)查死鎖時最重要的要求之一就是要研究死鎖。 在我的上一個博客中,我寫了一些名為DeadlockDemo代碼,該代碼使用一堆線程在一系列銀行賬戶之間轉(zhuǎn)移隨機數(shù),然后陷入僵局。

該博客運行該代碼以演示獲取線程轉(zhuǎn)儲的幾種方法。 線程轉(zhuǎn)儲只是一個報告,顯示給定時間點所有應(yīng)用程序線程的狀態(tài)。 這樣做的好處是,它包含各種信息,可讓您弄清為什么會出現(xiàn)死鎖,并希望可以解決此問題,但稍后會介紹更多。

殺死SIGQUIT

如果Java應(yīng)用程序在UNIX計算機上運行,??則搶占線程轉(zhuǎn)儲的第一種方法(可能是最簡單的方法)是通過終端使用UNIX kill命令。

為此,請先使用ps和grep命令掌握應(yīng)用程序的進程標(biāo)識符或PID。 例如,如果您鍵入:

ps –e | grep java

…然后您將生成一個類似于以下內(nèi)容的列表:

74941 ttys000 0:00.01 grep java 70201 ttys004 1:00.89 /usr/bin/java threads.deadlock.DeadlockDemo

在這種情況下, DeadlockDemo的PID是70201,它是從上面的輸出中獲取的。 請注意,不同類型的UNIX或不同的ps命令行參數(shù)可能會產(chǎn)生略有不同的結(jié)果,因此請檢查man頁。

掌握了PID之后,使用它發(fā)出kill SIGQUIT命令:

kill -3 70201

kill命令是UNIX命令,用于處理不需要的進程

盡管上面的-3是SIGQUIT(等效于鍵盤ctrl-D)參數(shù),但是如果Java收到此信號,它將不會退出,它將在其關(guān)聯(lián)的終端上顯示線程轉(zhuǎn)儲。 然后,您可以抓住它并將其復(fù)制到文本文件中以進行進一步分析。

jstack

如果您在Windows中工作,則UNIX命令行不可用。 為了解決此問題,Java附帶了一個執(zhí)行kill等效功能的實用程序。 這稱為jstack ,在UNIX和Windows上均可用。 它的用法與上面演示的kill命令相同:

jstack <PID>

在Windows中獲取PID是打開Windows任務(wù)管理器的問題。 任務(wù)管理器默認(rèn)情況下不顯示PID,因此您需要通過使用view菜單選項并在“ 選擇列”對話框中選中 PID(過程標(biāo)識符)選項來更新其設(shè)置。

接下來,只需檢查進程列表并找到合適的java.exe實例即可。

讀取java.exe的PID并將其用作jstack參數(shù),如下所示:

jstack 3492

命令完成后,您可以保留輸出并將其復(fù)制到文本文件中以進行進一步分析。

jVisualVM

jVisualVM是獲得線程轉(zhuǎn)儲的“ Rolls Royce”方法。 它是Oracle提供的工具,使您可以掌握有關(guān)Java VM的許多不同信息。 這包括堆轉(zhuǎn)儲,CPU使用率,內(nèi)存配置文件等等。

在Windows上,jVisualVM的實際程序名稱是jvisualvm或jvisualvm.exe 。 運行后,您將看到以下內(nèi)容:

要獲得線程轉(zhuǎn)儲,請在左側(cè)的應(yīng)用程序面板中找到您的應(yīng)用程序 ,然后右鍵單擊并選擇:“ Thread Dump”。

然后在jvisualvm的右側(cè)窗格中顯示一個線程轉(zhuǎn)儲,如下所示:

請注意,在連接到本地VM時,我多次看到j(luò)visualvm掛起。 發(fā)生這種情況時,請確保將其代理設(shè)置設(shè)置為“ 無代理”

獲得了線程轉(zhuǎn)儲后,我的下一個博客現(xiàn)在將使用它來研究示例DeadlockDemo代碼出了什么問題。

有關(guān)更多信息,請參閱本系列中的其他博客 。

參考: 調(diào)查死鎖-第2部分:在Captain Debug的Blog博客上從我們的JCG合作伙伴 Roger Hughes 獲得線程轉(zhuǎn)儲 。

翻譯自: https://www.javacodegeeks.com/2012/10/investigating-deadlocks-part-2.html

打破冷漠僵局文章

總結(jié)

以上是生活随笔為你收集整理的打破冷漠僵局文章_研究僵局–第2部分的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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