通过JConsole查看本地远程虚拟机
一、JConsole是什么
??? 從Java 5開始 引入了 JConsole。JConsole 是一個(gè)內(nèi)置 Java 性能分析器,可以從命令行或在 GUI shell 中運(yùn)行。您可以輕松地使用 JConsole(或者,它更高端的 “近親” VisualVM )來監(jiān)控 Java 應(yīng)用程序性能和跟蹤 Java 中的代碼。
二、如何啟動(dòng)JConsole
??? 當(dāng)分析工具彈出時(shí)(取決于正在運(yùn)行的 Java 版本以及正在運(yùn)行的 Java 程序數(shù)量),可能會(huì)出現(xiàn)一個(gè)對(duì)話框,要求輸入一個(gè)進(jìn)程的 URL 來連接,也可能列出許多不同的本地 Java 進(jìn)程(有時(shí)包含 JConsole 進(jìn)程本身)來連接。如圖所示:
想分析那個(gè)程序就雙擊那個(gè)進(jìn)程。
三、如何設(shè)置JAVA程序運(yùn)行時(shí)可以被JConsolse連接分析
四、JConsole如何連接遠(yuǎn)程機(jī)器的JAVA程序(舉例說明)
1、寫一個(gè)簡單的一直運(yùn)行的JAVA程序,運(yùn)行在某臺(tái)機(jī)器上如(192.168.0.181)
Java代碼 ?2、另外一臺(tái)機(jī)器進(jìn)行連接
可以直接使用命令:
Java代碼 ??也可以在已經(jīng)打開的JConsole界面操作 連接->新建連接->選擇遠(yuǎn)程進(jìn)程->輸入遠(yuǎn)程主機(jī)IP和端口號(hào)->點(diǎn)擊“連接”,如圖:
?
?然后就會(huì)進(jìn)入分析界面:?
性能分析
下面說說如何分析,如何使用這六個(gè)標(biāo)簽
- 概述: Displays overview information about the Java VM and monitored values.
- 內(nèi)存: 顯示內(nèi)存使用信息
- 線程: 顯示線程使用信息
- 類: 顯示類裝載信息
- *VM摘要:*顯示java VM信息
- MBeans: 顯示 MBeans.
概述
?
??? 概述很簡單沒啥說的,自己看看吧,不過值得一提的是對(duì)著圖點(diǎn)擊右鍵可以保存數(shù)據(jù)到CSV文件,以后可以使用其他工具來分析這些數(shù)據(jù)。
內(nèi)存
??? 這個(gè)比較有價(jià)值,參看堆內(nèi)存,非堆內(nèi)存,內(nèi)存池的狀況總體內(nèi)存的分配和使用情況以及不同的GC進(jìn)行垃圾回收的次數(shù)和時(shí)間。可以手動(dòng)進(jìn)行GC查看內(nèi)存變化。
?
?? 在分析JAVA內(nèi)存問題進(jìn)行調(diào)優(yōu)時(shí)候非常有用,你要學(xué)習(xí)JVM內(nèi)存模型,之后會(huì)發(fā)現(xiàn)這里的每個(gè)值都具有意義。
?
?? GC的算法和參數(shù)對(duì)性能有顯著的影響,注意垃圾回收次數(shù)、時(shí)間、以及partial GC和full GC,調(diào)整你所使用的不同GC和以及各個(gè)GC下的參數(shù),然后在這個(gè)視圖下觀察,以得到好的性能。
?
這里貼一下 Java HotSpot VM garbage collector 下generational GC 的各代的劃分圖:
?
關(guān)于GC,可以參考:http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html
線程
??? 左下角顯示所有的活動(dòng)線程(如果線程過多,可以在下面的過濾欄中輸入字符串過濾出你想要觀察的線程)。點(diǎn)擊某個(gè)顯示會(huì)顯示這個(gè)線程的名稱、狀態(tài)、阻塞和等待的次數(shù)、堆棧的信息。
?
??? 統(tǒng)計(jì)圖顯示的是線程數(shù)目的峰值(紅色)和當(dāng)前活動(dòng)的線程(藍(lán)色)。
?
?? 另外下面有個(gè)按鈕“檢測到死鎖”,有時(shí)候會(huì)有用處。
類
沒啥要說的。
VM摘要
?
也沒啥要說的,看看吧,內(nèi)存狀況,操作系統(tǒng)…
MBean
這里可以有一些額外的操作。
超強(qiáng)干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生總結(jié)
以上是生活随笔為你收集整理的通过JConsole查看本地远程虚拟机的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaJDK中的命令行工具
- 下一篇: 类加载的时机