天天看點

jvisualvm監控本地程序檢視不到線程資訊,且CPU報:Not supported for this JVM背景現象解決方法

背景

我本來是想檢視一個本地java程序的線程堆棧資訊,因為是在我本機中,是以想着用jvisualvm工具來看友善,省得敲指令,然而問題來了,不僅沒有線程資訊,而且jstack也不管用了

現象

下圖是我機器上有問題的程序使用jvisualvm檢視的結果:

jvisualvm監控本地程式檢視不到線程資訊,且CPU報:Not supported for this JVM背景現象解決方法
jvisualvm監控本地程式檢視不到線程資訊,且CPU報:Not supported for this JVM背景現象解決方法

在導航欄的Montior右邊沒有Threads資訊,并且CPU監控這個區域,報的是Not supported for this JVM.

然後,我點選我旁邊的IDEA的程序,檢視,很正常,截圖如下:

jvisualvm監控本地程式檢視不到線程資訊,且CPU報:Not supported for this JVM背景現象解決方法

問題來了,這兩個都是本地程序,怎麼會出現這種情況,我本意隻是想看一下線程堆棧資訊,既然jvisualvm不管用,那我用指令試下,結果這個異常程序還是有問題:

jvisualvm監控本地程式檢視不到線程資訊,且CPU報:Not supported for this JVM背景現象解決方法

這就很尴尬了,同樣是本地程序,怎麼會如此不同結果。我用的JDK版本是1.7的,本機上也就這一個,另外系統上也沒什麼權限禁止的。

在網上查了不少資料,但是沒有一個可以解決我的問題的。

忽然,我想到了一種可能性,是不是和我啟動的java程序的目錄有關系。

解決方法

這個異常程序是我用IDEA啟動的,是以不用考慮是配置方面的問題,那就應該是源碼所在的目錄位置的問題。

先解釋下我的作業系統的目錄情況:

我用的是ubuntu系統,電腦本來是有一個固态盤(裝windows的時候是系統盤,後來被我分隔成倆盤,一個放系統,一個放應用),還有一個1個T的機械盤。

後來因某些原因,不能再用windows了,所有考慮裝個ubuntu來作為日常工作使用了,但是又不舍得把個windows系統和已經裝好的應用删除了(萬一哪天又用上了呢),是以隻能裝雙系統。

然後,我就在這個1個T的機械盤上開了100G的空間來裝ubuntu,畢竟100G不大,平常使用是要放好多東西的,是以其它的空間也不能浪費了,于是我就把原來是windows下的分區全部挂載到這個ubuntu系統的目錄下,平常工作中的文檔,代碼等亂七八糟的都放到其挂載的分區中,堅決不放到這100G這個分區下。

于是,我就想是不是因為這個異常程序的啟動目錄是在其它的分區下,是以有問題,而IDEA就是在我這個ubuntu系統所在的分區下是以沒問題,于是把代碼複制過來,試了下,果然沒問題了。

那麼,現在問題來了,代碼在挂載的分區目錄下,為什麼導緻jstack指令不可用了,我還沒弄明白,不知道是檔案系統類型的問題,還是啥子原因麼。若有知道的大佬,希望能告知下,謝謝。