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

然后就會彈出如下圖形界面

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

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

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

9分鐘后:

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

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

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