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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

jstack 脚本 自动日志_深入理解jstack日志

發(fā)布時(shí)間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jstack 脚本 自动日志_深入理解jstack日志 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Tags : jstack日志發(fā)表時(shí)間:

2019-03-17 23:53:19

在分析線上問題時(shí)常使用到j(luò)stack 命令將當(dāng)時(shí)Java應(yīng)用程序的線程堆棧dump出來。

面對(duì)jstack 日志,我們?nèi)绾尾榭?#xff1f;

首先要清楚線程的狀態(tài)

線程的狀態(tài)有:new、runnable、running、waiting、timed_waiting、blocked、dead

線程狀態(tài)變遷圖:

各狀態(tài)說明:

New: 當(dāng)線程對(duì)象創(chuàng)建時(shí)存在的狀態(tài),此時(shí)線程不可能執(zhí)行;

Runnable:當(dāng)調(diào)用thread.start()后,線程變成為Runnable狀態(tài)。只要得到CPU,就可以執(zhí)行;

Running:線程正在執(zhí)行;

Waiting:執(zhí)行thread.join()或在鎖對(duì)象調(diào)用obj.wait()等情況就會(huì)進(jìn)該狀態(tài),表明線程正處于等待某個(gè)資源或條件發(fā)生來喚醒自己;

Timed_Waiting:執(zhí)行Thread.sleep(long)、thread.join(long)或obj.wait(long)等就會(huì)進(jìn)該狀態(tài),與Waiting的區(qū)別在于Timed_Waiting的等待有時(shí)間限制;

Blocked:如果進(jìn)入同步方法或同步代碼塊,沒有獲取到鎖,則會(huì)進(jìn)入該狀態(tài);

Dead:線程執(zhí)行完畢,或者拋出了未捕獲的異常之后,會(huì)進(jìn)入dead狀態(tài),表示該線程結(jié)束

其次,對(duì)于jstack日志,我們要著重關(guān)注如下關(guān)鍵信息

Deadlock:表示有死鎖

Waiting on condition:等待某個(gè)資源或條件發(fā)生來喚醒自己。具體需要結(jié)合jstacktrace來分析,比如線程正在sleep,網(wǎng)絡(luò)讀寫繁忙而等待

Blocked:阻塞 Waiting on monitor entry:在等待獲取鎖

in Object.wait():獲取鎖后又執(zhí)行obj.wait()放棄鎖

對(duì)于Waiting on monitor entry 和 in Object.wait()的詳細(xì)描述:Monitor是 Java中用以實(shí)現(xiàn)線程之間的互斥與協(xié)作的主要手段,它可以看成是對(duì)象或者 Class的鎖。每一個(gè)對(duì)象都有,也僅有一個(gè) monitor。從下圖中可以看出,每個(gè) Monitor在某個(gè)時(shí)刻,只能被一個(gè)線程擁有,該線程就是 "Active Thread",而其它線程都是 "Waiting Thread",分別在兩個(gè)隊(duì)列 " Entry Set"和 "Wait Set"里面等候。在 "Entry Set"中等待的線程狀態(tài)是 "Waiting for monitor entry",而在 "Wait Set"中等待的線程狀態(tài)是 "in Object.wait()"

最后通過示例來實(shí)踐一下

示例一:描述 Blocked 和 Waiting to lock

執(zhí)行后程序輸出:

Thread[main,5,main]

說明主線程先進(jìn)入同步代碼塊,獲取到thread2對(duì)象上的鎖。

通過jstack輸出結(jié)果:

先說明下日志格式:

"thread2"為線程名稱,在平時(shí)創(chuàng)建線程或線程池時(shí)請(qǐng)務(wù)必取一個(gè)見明之義的線程名稱,方便排查問題;

prio=6:線程優(yōu)先級(jí),不用關(guān)心;

tid=0x0000000006540800:線程id,不用關(guān)心;

nid=0x2be4:操作系統(tǒng)映射的線程id, 非常關(guān)鍵,后面再使用jstack時(shí)補(bǔ)充;

waiting for monitor entry:表示線程正在等待獲取鎖

0x0000000006dbf000:線程棧起始地址

從jstack日志中,可以看到:主線程獲取到thread2對(duì)象上的鎖,因此正在執(zhí)行sleep操作,狀態(tài)為TIMED_WAINTING, 而thread2由于未獲取到thread2對(duì)象上的鎖,因此處于BLOCKED狀態(tài)。

再細(xì)看,thread2 正在"waiting to lock <0x00000000d719d280>",即試圖在地址為0x00000000d719d280所在的對(duì)象獲取鎖,而該鎖卻被main線程占有(locked <0x00000000d719d280>)。main線程正在"waiting on condition",說明正在等待某個(gè)條件觸發(fā),由jstacktrace來看,此線程正在sleep。

經(jīng)驗(yàn):如果在jstack日志發(fā)現(xiàn)大量的線程在waiting to lock 某個(gè)地址,只要能查到哪個(gè)線程獲取到鎖就可以方便定位問題了

示例二:描述waiting on condition

]

jstack日志輸出結(jié)果:

從日志中可以看到,main線程的狀態(tài)是Waiting,正在"waiting on condition"來喚醒自己。

結(jié)合jstackstrace日志來看,"parking to wait for <0x00000000d719ba70> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)"說明在調(diào)用ArrayBlockingQueue.put()阻塞了。

示例三:描述Object.wait()

程序輸出結(jié)果:

Thread[thread2,5,main]

Thread[main,5,main]

說明線程thread2先進(jìn)入同步代碼塊,獲取到thread2對(duì)象上的鎖。

jstack日志輸出結(jié)果:

可以看出:線程thread2的狀態(tài)是"Waiting", 正在"in Object.wait()"。表明該線程在獲取到對(duì)象鎖后,調(diào)用obj.wait()方法,放棄了鎖,進(jìn)入了"Wait Set"隊(duì)列。

...閱讀原文

總結(jié)

以上是生活随笔為你收集整理的jstack 脚本 自动日志_深入理解jstack日志的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 自拍偷拍亚洲欧美 | 国产伦理吴梦梦伦理 | 亚洲不卡视频在线观看 | yw视频在线观看 | 国产精品久久久久久一区二区三区 | 欧美做爰猛烈床戏大尺度 | 亚洲第八页 | 天天综合射 | 亚洲精品另类 | 好吊日精品视频 | 91亚洲一区 | 国产麻豆天美果冻无码视频 | 一区二区亚洲 | 男人操女人下面视频 | 丁香午夜 | xxxxx黄色片 噜噜噜噜噜色 | 91在线在线 | 天堂中文字幕在线 | 爱爱视频在线播放 | 黑人100部av解禁片 | 国产精品视频一区二区三 | 国产精品美女www爽爽爽 | 国产精品av在线免费观看 | 超碰狠狠干 | 亚洲情侣av| 国产精品久久视频 | 久久成人综合 | 国产一区视频网站 | 九九热这里有精品 | 久操久操久操 | 国产亚洲性欧美日韩在线观看软件 | 欧美操操| 久久久久久久色 | 中文字幕亚洲无线码在线一区 | www.17c.com喷水少妇 | 国产福利免费在线观看 | 亚洲乱熟女一区二区三区小说 | 激情午夜婷婷 | 成人一级网站 | 一级在线免费视频 | 亚洲高潮av | 最好看的2019中文大全在线观看 | 国产精品熟女一区二区不卡 | 国产美女免费观看 | 在线日韩成人 | 亚洲双插 | 久色综| 国产欧美日韩综合精品一区二区 | 综合精品在线 | 老头把女人躁得呻吟 | 日韩在线播放av | 欧美精品亚洲一区 | 日视频| 色欲人妻综合网 | 99精品视频免费版的特色功能 | 国产九色91回来了 | 男女一进一出视频 | 一级黄色性生活片 | 美女草逼视频 | 国产成人91 | 亚洲一级Av无码毛片久久精品 | 不卡av影院 | 国产资源在线观看 | 人人爽人人澡 | 精品国产乱码久久久久久1区二区 | 九色porny视频 | 欧美成人国产精品一区二区 | 韩国三级hd中文字幕有哪些 | 成人免费毛片足控 | 欧美一级片播放 | 日韩制服诱惑 | 欧美激情网址 | 一区二区三区日韩精品 | 在线视频久久 | 欧美丰满一区二区免费视频 | 成人av免费在线播放 | 国产鲁鲁视频在线观看免费 | 人妻洗澡被强公日日澡 | 全黄一级裸体片 | 日韩精品色 | 国产成人久久精品麻豆二区 | 沟厕沟厕近拍高清视频 | 91小视频在线观看 | 精人妻一区二区三区 | 樱桃成人精品视频在线播放 | 24小时日本在线www免费的 | 亚洲av无码一区二区乱子伦as | 色妞网| 亚洲综合性 | 精品少妇久久久久久888优播 | 日韩欧美高清一区 | 大尺度在线观看 | 99国产精品久久久久久久成人 | 国产一区二区精品在线观看 | 嫩草影院中文字幕 | 国产精品影院在线观看 | 最近最新mv字幕观看 | 中文字幕在线视频播放 | 国产精品suv一区 |