網(wǎng)站建設(shè)與文字的工作成都百度推廣代理公司
這篇文章源自一次加班改bug的慘痛經(jīng)歷=[,,_,,]:3
負(fù)責(zé)的一個(gè)項(xiàng)目占用不斷增加,差點(diǎn)搞崩服務(wù)器(╥﹏╥)……
一下子有點(diǎn)懵,不能立刻確定是哪里導(dǎo)致的問(wèn)題,所以決定好好研究下這個(gè)之前一直被我忽視的問(wèn)題診斷工具🔧——JVisualVM
嘿嘿我們開(kāi)始吧(。・ω・。)ノ
簡(jiǎn)介
JVisualVM是一款支持對(duì)CPU、內(nèi)存運(yùn)行進(jìn)行采樣、配置的可視化的界面
基本操作流程
打開(kāi)JVisualVM
命令行中輸入jvisualvm

然后就會(huì)彈出如下圖形界面

查看監(jiān)視模塊
JVisualVM界面的左側(cè)會(huì)出現(xiàn)正在運(yùn)行中的項(xiàng)目,單機(jī)選擇一個(gè)項(xiàng)目,右側(cè)就會(huì)出現(xiàn)這個(gè)項(xiàng)目的概況

在右側(cè)試圖中選擇“監(jiān)視”,下方會(huì)出現(xiàn)該項(xiàng)目運(yùn)行參數(shù)詳情🔎(包括CPU使用情況,堆/Metaspace使用情況,當(dāng)前項(xiàng)目的類詳情,以及線程使用詳情)

舉個(gè)🌰
拿我這次遇到的問(wèn)題舉個(gè)例子
我在本地運(yùn)行這個(gè)出問(wèn)題的項(xiàng)目,打開(kāi)該項(xiàng)目的監(jiān)視模塊,發(fā)現(xiàn)其他基本正常,但是線程數(shù)在不斷增加(如下兩張圖的線程數(shù)的對(duì)比,9分鐘活動(dòng)線程就從21,增加到了99),這應(yīng)該就是導(dǎo)致內(nèi)存不斷增加的原因。
開(kāi)始監(jiān)視:

9分鐘后:

于是在確定了問(wèn)題可能出現(xiàn)的幾個(gè)位置后,我分別進(jìn)行注釋,然后觀察注釋前后,項(xiàng)目執(zhí)行時(shí)JVisualVM中監(jiān)測(cè)模塊的數(shù)據(jù)變化……
直到當(dāng)我注釋其中一個(gè)位置時(shí),發(fā)現(xiàn)線程數(shù)不再一直增加了

longlonglong……ago(大概也就一個(gè)世紀(jì)吧=_=)

只增加了3個(gè),所以問(wèn)題基本就確定了,后面就開(kāi)始吭哧吭哧改代碼叻(_ _).。o○就不啰嗦叻
擴(kuò)展資料💾
由于有后續(xù)工作排期,找到了問(wèn)題就沒(méi)有再繼續(xù)深入了,想要深入的盆友可以參考官方網(wǎng)站
https://visualvm.github.io/index.html