VisualVM中文版是一款JAVA性能調(diào)優(yōu)工具,它集成了多個(gè)jdk命令行的可視化工具,我們可以對(duì)JAVA應(yīng)用做性能分析的調(diào)優(yōu)!讓你的應(yīng)用更加高效運(yùn)行!VisualVM工具功能包括生成和分析海量數(shù)據(jù)、跟蹤內(nèi)存泄漏、監(jiān)控垃圾回收器、執(zhí)行內(nèi)存和 CPU 分析,同時(shí)它還支持在 MBeans 上進(jìn)行瀏覽和操作,相信編程的朋友會(huì)用的上的哦。
VisualVM中文版功能介紹
一、性能分析的主要方式。
1.監(jiān)控:監(jiān)控是檢查應(yīng)用程序運(yùn)行時(shí)行為的一般方法。多個(gè)視圖分別實(shí)時(shí)顯示CPU的使用狀況、內(nèi)存的使用狀況、線程狀態(tài)和其他有用的信息,以便用戶能夠立即發(fā)現(xiàn)問題的關(guān)鍵。
2.存儲(chǔ):性能分析工具從存儲(chǔ)器中獲取當(dāng)前狀態(tài)數(shù)據(jù),存儲(chǔ)到文件用于靜態(tài)性能分析。Java程序通過在啟動(dòng)Java程序時(shí)添加適當(dāng)?shù)臈l件參數(shù)來觸發(fā)轉(zhuǎn)移操作。包括以下三種類型:
系統(tǒng)轉(zhuǎn)移:JVM生成的當(dāng)?shù)叵到y(tǒng)轉(zhuǎn)移,也稱為核心轉(zhuǎn)移。一般來說,系統(tǒng)的存儲(chǔ)數(shù)據(jù)量很大,需要與平臺(tái)相關(guān)的工具進(jìn)行分析,如Windows上的windbg和Linux上的gdb。
Java轉(zhuǎn)移:JVM內(nèi)部生成的格式化數(shù)據(jù)包括線程信息、類別加載信息和堆積統(tǒng)計(jì)數(shù)據(jù)。通常也用于檢測死鎖。
堆積存儲(chǔ):JVM將所有對(duì)象的堆積內(nèi)容存儲(chǔ)在文件中。
二、快照:
APP啟動(dòng)后,性能分析工具開始收集各種運(yùn)行時(shí)的數(shù)據(jù),其中有些數(shù)據(jù)直接顯示在監(jiān)視圖中,而且大部分?jǐn)?shù)據(jù)保存在內(nèi)部,直到用戶要求取得快照,才顯示出基于這些保存的數(shù)據(jù)的統(tǒng)計(jì)信息??煺瞻珹PP在一段時(shí)間內(nèi)的執(zhí)行信息,通常有CPU快照和內(nèi)存快照兩種。
CPU快照:主要包括應(yīng)用程序函數(shù)的調(diào)用關(guān)系和運(yùn)行時(shí)間,這些信息通??梢栽贑PU快照視圖中查看。
內(nèi)存快照:主要包括內(nèi)存的分配和使用情況、裝載的所有類別、存在的對(duì)象信息和對(duì)象之間的引用關(guān)系等。這些信息通??梢栽趦?nèi)存快照視圖中查看。
三、性能分析:
性能分析通過收集程序運(yùn)行時(shí)的執(zhí)行數(shù)據(jù),幫助開發(fā)人員優(yōu)化程序所需的部分,提高程序的運(yùn)行速度和存儲(chǔ)器的使用效率,主要有以下三個(gè)方面
CPU性能分析:CPU性能分析的主要目的是統(tǒng)計(jì)函數(shù)的調(diào)用狀況和執(zhí)行時(shí)間,或者更簡單的情況是統(tǒng)計(jì)應(yīng)用程序的CPU使用狀況。通常有CPU監(jiān)控和CPU快照兩種方式來顯示CPU性能分析結(jié)果。
存儲(chǔ)性能分析:存儲(chǔ)性能分析的主要目的是通過統(tǒng)計(jì)存儲(chǔ)使用情況來檢測可能存在的存儲(chǔ)泄漏問題,并確定優(yōu)化存儲(chǔ)使用的方向。通常有內(nèi)存監(jiān)控和內(nèi)存快照兩種方式來顯示內(nèi)存性能分析結(jié)果。
線程性能分析:線程性能分析主要用于在多線程應(yīng)用程序中確定存儲(chǔ)器的問題。一般包括線程狀態(tài)的變化狀況、死鎖狀況和某線程在線程生命期內(nèi)狀態(tài)的分布狀況等。
VisualVM中文版軟件特色
1.內(nèi)存分析。
VisualVM可以通過檢測JVM中加載的類別和對(duì)象信息等來分析存儲(chǔ)器的使用情況,通過VisualVM的監(jiān)視標(biāo)簽和Profiler標(biāo)簽可以對(duì)應(yīng)用程序進(jìn)行存儲(chǔ)器分析。
2.中央處理器分析。
VisualVM可以監(jiān)控應(yīng)用程序在一段時(shí)間內(nèi)的CPU使用情況,顯示CPU的使用率、方法的執(zhí)行效率和頻率等相關(guān)數(shù)據(jù),有助于發(fā)現(xiàn)應(yīng)用程序的性能瓶頸。我們可以通過VisualVM的監(jiān)控標(biāo)簽和Profiler標(biāo)簽對(duì)應(yīng)用程序進(jìn)行CPU性能分析。
3.線程分析。
Java語言可以很好地實(shí)現(xiàn)多線程應(yīng)用。當(dāng)我們調(diào)整或開發(fā)多線程應(yīng)用程序后期進(jìn)行性能調(diào)整時(shí),我們通常需要了解當(dāng)前程序中所有線程的運(yùn)行狀態(tài),以及是否有死鎖、熱鎖等情況,從而分析系統(tǒng)可能存在的問題。
4.快照分析。
我們可以使用VisualVM的快照功能,生成任何性能分析快照,保存在當(dāng)?shù)?,幫助我們進(jìn)行性能分析。快照為抓取APP性能分析數(shù)據(jù)提供了一個(gè)非常便捷的方式,因?yàn)榭煺找坏┥?,就可以隨時(shí)離線打開查看,也可以相互傳播。
VisualVM提供了兩種快照
專業(yè)快照:當(dāng)一個(gè)性能分析對(duì)話(內(nèi)存或CPU)正在進(jìn)行時(shí),我們可以通過性能分析結(jié)果工具欄的快照按鈕生成專業(yè)快照來捕捉當(dāng)時(shí)的性能分析數(shù)據(jù)。
應(yīng)用快照:右鍵點(diǎn)擊左側(cè)應(yīng)用程序窗口的應(yīng)用程序節(jié)點(diǎn),選擇應(yīng)用程序快照生成應(yīng)用程序快照。應(yīng)用快照在收集某個(gè)時(shí)刻的堆積轉(zhuǎn)移、線程轉(zhuǎn)移和Profiler快照的同時(shí),也捕獲JVM的基本信息。
5.轉(zhuǎn)移功能。
線程轉(zhuǎn)移存儲(chǔ)的生成與分析:VisualVM可以生成線程轉(zhuǎn)移存儲(chǔ)在運(yùn)行中的本地應(yīng)用程序,印刷活動(dòng)線程的堆棧痕跡,有效理解線程的運(yùn)行狀況,診斷死鎖、應(yīng)用程序癱瘓等問題。
堆積轉(zhuǎn)移存儲(chǔ)的生成和分析:VisualVM可以生成堆積轉(zhuǎn)移存儲(chǔ),統(tǒng)計(jì)某個(gè)特定時(shí)刻JVM中的對(duì)象信息,分析對(duì)象的引用關(guān)系、內(nèi)存是否泄漏等。
VisualVM安裝方教程
VisualVM 是一個(gè)性能分析工具,自從 JDK 6 Update 7 以后已經(jīng)作為 Oracle JDK 的一部分,位于 JDK 根目錄的 bin 文件夾下。VisualVM 自身要在 JDK6 以上的版本上運(yùn)行,但是它能夠監(jiān)控 JDK1.4 以上版本的應(yīng)用程序。下面主要介紹如何安裝 VisualVM 以及各種 VisualVM 上的插件。
一、安裝VisualVM
1、將 VisualVM 安裝程序解壓縮到本地系統(tǒng)。
2、導(dǎo)航至 VisualVM 安裝目錄的 bin 目錄,然后啟動(dòng) jvisualvm.exe。
二、安裝 VisualVM 上的插件
VisualVM 插件中心提供很多插件以供安裝向 VisualVM 添加功能??梢酝ㄟ^ VisualVM 應(yīng)用程序安裝,或者從 VisualVM 插件中心手動(dòng)下載插件,然后離線安裝。另外,用戶還可以通過下載插件分發(fā)文件 (.nbm 文件 ) 安裝第三方插件為 VisualVM 添加功能。
1、VisualVM 插件中心安裝插件安裝步驟 :
從主菜單中選擇“工具”>“插件”。
在“可用插件”標(biāo)簽中,選中該插件的“安裝”復(fù)選框。單擊“安裝”。
逐步完成插件安裝程序。
2、從主菜單中選擇“工具”>“插件”。
在“已下載”標(biāo)簽中,點(diǎn)擊"添加插件"按鈕,選擇已下載的插件分發(fā)文件 (.nbm) 并打開。
選中打開的插件分發(fā)文件,并單擊"安裝"按鈕,逐步完成插件安裝程序。
VisualVM使用教程
一 Visual GC(監(jiān)控垃圾回收器)
Java VisualVM默認(rèn)沒有安裝Visual GC插件,需要手動(dòng)安裝,JDK的安裝目錄的bin目露下雙擊jvisualvm.exe,即可打開Java VisualVM,點(diǎn)擊菜單欄 工具->插件 安裝Visual GC
安裝完成后重啟Java VisualVM,Visual GC界面自動(dòng)打開,即可看到JVM中堆內(nèi)存的分代情況
被監(jiān)控的程序運(yùn)行一段時(shí)間后Visual GC顯示如下