當(dāng)前位置:首頁 > 電腦軟件 > 編程其它 > VisualVM(Java 程序性能分析工具)

VisualVM(Java 程序性能分析工具)

版本:v2.1.8 大小:21.58M 語言:簡(jiǎn)體中文 類別:編程其它
  • 類型:國(guó)產(chǎn)軟件
  • 授權(quán):免費(fèi)軟件
  • 更新:2024-04-16
  • 標(biāo)簽: java編程
  • 環(huán)境:Windows7,WinXP,WinVista
  • 本地下載
9
0% 0%

情介紹

VisualVM是一個(gè)專門用于監(jiān)控Java的虛擬機(jī)JVM的監(jiān)控工具,大家都知道java的環(huán)境下許多東西都是命令行的形式,而這款工具能夠讓用戶獲得一個(gè)圖形界面來方便你快捷的查看多個(gè)java應(yīng)用程序的相關(guān)信息。
通俗的講,VisualVM是一種集成了多種JDK命令行工具的可視化工具,能夠?yàn)槲覀兊挠脩籼峁?qiáng)大的分析能力,而且最主要的就是這些全部免費(fèi),你可以不花費(fèi)任何代價(jià),就可以利用這款軟件管理好自己的java應(yīng)用程序,當(dāng)然用戶如果想要使用最新的軟件還是需要最新的java/soft/4845.html版本的。當(dāng)然,VisualVM的功能還是非常強(qiáng)大的,一些工具能夠幫助用戶生成和分析海量數(shù)據(jù)、跟蹤內(nèi)存泄露、監(jiān)控垃圾回收器、執(zhí)行內(nèi)存和CPU分析等等,有需要的用戶不要錯(cuò)過哦。
VisualVM下載

VisualVM(Java 程序性能分析工具)特色

1、監(jiān)視:監(jiān)視是一種用來查看應(yīng)用程序運(yùn)行時(shí)行為的一般方法。通常會(huì)有多個(gè)視圖(View)分別實(shí)時(shí)地顯示 CPU 使用情況、內(nèi)存使用情況、線程狀態(tài)以及其他一些有用的信息,以便用戶能很快地發(fā)現(xiàn)問題的關(guān)鍵所在。
2、轉(zhuǎn)儲(chǔ):性能分析工具從內(nèi)存中獲得當(dāng)前狀態(tài)數(shù)據(jù)并存儲(chǔ)到文件用于靜態(tài)的性能分析。Java 程序是通過在啟動(dòng) Java 程序時(shí)添加適當(dāng)?shù)臈l件參數(shù)來觸發(fā)轉(zhuǎn)儲(chǔ)操作的。它包括以下三種:
3、系統(tǒng)轉(zhuǎn)儲(chǔ):JVM 生成的本地系統(tǒng)的轉(zhuǎn)儲(chǔ),又稱作核心轉(zhuǎn)儲(chǔ)。一般的,系統(tǒng)轉(zhuǎn)儲(chǔ)數(shù)據(jù)量大,需要平臺(tái)相關(guān)的工具去分析,如 Windows 上的 windbg 和 Linux 上的 gdb。
4、Java 轉(zhuǎn)儲(chǔ):JVM 內(nèi)部生成的格式化后的數(shù)據(jù),包括線程信息,類的加載信息以及堆的統(tǒng)計(jì)數(shù)據(jù)。通常也用于檢測(cè)死鎖。
5、堆轉(zhuǎn)儲(chǔ):JVM 將所有對(duì)象的堆內(nèi)容存儲(chǔ)到文件。
6、快照:應(yīng)用程序啟動(dòng)后,性能分析工具開始收集各種運(yùn)行時(shí)數(shù)據(jù),其中一些數(shù)據(jù)直接顯示在監(jiān)視視圖中,而另外大部分?jǐn)?shù)據(jù)被保存在內(nèi)部,直到用戶要求獲取快照,基于這些保存的數(shù)據(jù)的統(tǒng)計(jì)信息才被顯示出來。快照包含了應(yīng)用程序在一段時(shí)間內(nèi)的執(zhí)行信息,通常有 CPU 快照和內(nèi)存快照兩種類型。
7、CPU 快照:主要包含了應(yīng)用程序中函數(shù)的調(diào)用關(guān)系及運(yùn)行時(shí)間,這些信息通??梢栽?CPU 快照視圖中進(jìn)行查看。
8、內(nèi)存快照:主要包含了內(nèi)存的分配和使用情況、載入的所有類、存在的對(duì)象信息及對(duì)象間的引用關(guān)系等。這些信息通??梢栽趦?nèi)存快照視圖中進(jìn)行查看。
9、性能分析:性能分析是通過收集程序運(yùn)行時(shí)的執(zhí)行數(shù)據(jù)來幫助開發(fā)人員定位程序需要被優(yōu)化的部分,從而提高程序的運(yùn)行速度或是內(nèi)存使用效率,主要有以下三個(gè)方面:
10、CPU 性能分析:CPU 性能分析的主要目的是統(tǒng)計(jì)函數(shù)的調(diào)用情況及執(zhí)行時(shí)間,或者更簡(jiǎn)單的情況就是統(tǒng)計(jì)應(yīng)用程序的 CPU 使用情況。通常有 CPU 監(jiān)視和 CPU 快照兩種方式來顯示 CPU 性能分析結(jié)果。
11、內(nèi)存性能分析:內(nèi)存性能分析的主要目的是通過統(tǒng)計(jì)內(nèi)存使用情況檢測(cè)可能存在的內(nèi)存泄露問題及確定優(yōu)化內(nèi)存使用的方向。通常有內(nèi)存監(jiān)視和內(nèi)存快照兩種方式來顯示內(nèi)存性能分析結(jié)果。
12、線程性能分析:線程性能分析主要用于在多線程應(yīng)用程序中確定內(nèi)存的問題所在。一般包括線程的狀態(tài)變化情況,死鎖情況和某個(gè)線程在線程生命期內(nèi)狀態(tài)的分布情況等。

VisualVM功能介紹

1、內(nèi)存分析
VisualVM 通過檢測(cè) JVM 中加載的類和對(duì)象信息等幫助我們分析內(nèi)存使用情況,我們可以通過 VisualVM 的監(jiān)視標(biāo)簽和 Profiler 標(biāo)簽對(duì)應(yīng)用程序進(jìn)行內(nèi)存分析。
在監(jiān)視標(biāo)簽內(nèi),我們可以看到實(shí)時(shí)的應(yīng)用程序內(nèi)存堆以及永久保留區(qū)域的使用情況。
此外,我們也可以通過 Applications 窗口右擊應(yīng)用程序節(jié)點(diǎn)來啟用“在出現(xiàn) OOME 時(shí)生成堆 Dump”功能,當(dāng)應(yīng)用程序出現(xiàn) OutOfMemory 例外時(shí),VisualVM 將自動(dòng)生成一個(gè)堆轉(zhuǎn)儲(chǔ)。
在 Profiler 標(biāo)簽,點(diǎn)擊“內(nèi)存”按鈕將啟動(dòng)一個(gè)內(nèi)存分析會(huì)話,等 VisualVM 收集和統(tǒng)計(jì)完相關(guān)性能數(shù)據(jù)信息,將會(huì)顯示在性能分析結(jié)果。通過內(nèi)存性能分析結(jié)果,我們可以查看哪些對(duì)象占用了較多的內(nèi)存,存活的時(shí)間比較長(zhǎng)等,以便做進(jìn)一步的優(yōu)化。
此外,我們可以通過性能分析結(jié)果下方的類名過濾器對(duì)分析結(jié)果進(jìn)行過濾。
2、CPU 分析
VisualVM 能夠監(jiān)控應(yīng)用程序在一段時(shí)間的 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 性能分析。
在監(jiān)視標(biāo)簽內(nèi),我們可以查看 CPU 的使用率以及垃圾回收活動(dòng)對(duì)性能的影響。過高的 CPU 使用率可能是由于我們的項(xiàng)目中存在低效的代碼,可以通過 Profiler 標(biāo)簽的 CPU 性能分析功能進(jìn)行詳細(xì)的分析。如果垃圾回收活動(dòng)過于頻繁,占用了較高的 CPU 資源,可能是由內(nèi)存不足或者是新生代和舊生代分配不合理導(dǎo)致的等。
在 Profiler 標(biāo)簽,點(diǎn)擊“CPU”按鈕啟動(dòng)一個(gè) CPU 性能分析會(huì)話 ,VisualVM 會(huì)檢測(cè)應(yīng)用程序所有的被調(diào)用的方法。當(dāng)進(jìn)入一個(gè)方法時(shí),線程會(huì)發(fā)出一個(gè)“method entry”的事件,當(dāng)退出方法時(shí)同樣會(huì)發(fā)出一個(gè)“method exit”的事件,這些事件都包含了時(shí)間戳。然后 VisualVM 會(huì)把每個(gè)被調(diào)用方法的總的執(zhí)行時(shí)間和調(diào)用的次數(shù)按照運(yùn)行時(shí)長(zhǎng)展示出來。
此外,我們也可以通過性能分析結(jié)果下方的方法名過濾器對(duì)分析結(jié)果進(jìn)行過濾。
3、線程分析
Java 語言能夠很好的實(shí)現(xiàn)多線程應(yīng)用程序。當(dāng)我們對(duì)一個(gè)多線程應(yīng)用程序進(jìn)行調(diào)試或者開發(fā)后期做性能調(diào)優(yōu)的時(shí)候,往往需要了解當(dāng)前程序中所有線程的運(yùn)行狀態(tài),是否有死鎖、熱鎖等情況的發(fā)生,從而分析系統(tǒng)可能存在的問題。
在 VisualVM 的監(jiān)視標(biāo)簽內(nèi),我們可以查看當(dāng)前應(yīng)用程序中所有活動(dòng)線程和守護(hù)線程的數(shù)量等實(shí)時(shí)信息。
VisualVM 的線程標(biāo)簽提供了三種視圖,默認(rèn)會(huì)以時(shí)間線的方式展現(xiàn)。另外兩種視圖分別是表視圖和詳細(xì)信息視圖。
時(shí)間線視圖上方的工具欄提供了縮小,放大和自適應(yīng)三個(gè)按鈕,以及一個(gè)下拉框,我們可以選擇將所有線程、活動(dòng)線程或者完成的線程顯示在視圖中。
4、快照功能
我們可以使用 VisualVM 的快照功能生成任意個(gè)性能分析快照并保存到本地來輔助我們進(jìn)行性能分析??煺諡椴东@應(yīng)用程序性能分析數(shù)據(jù)提供了一個(gè)很便捷的方式因?yàn)榭煺找坏┥煽梢栽谌魏螘r(shí)候離線打開和查看,也可以相互傳閱。
VisualVM 提供了兩種類型的快照:
Profiler 快照:當(dāng)有一個(gè)性能分析會(huì)話(內(nèi)存或者 CPU)正在進(jìn)行時(shí),我們可以通過性能分析結(jié)果工具欄的“快照”按鈕生成 Profiler 快照捕獲當(dāng)時(shí)的性能分析數(shù)據(jù)。
應(yīng)用程序快照:我們可以右鍵點(diǎn)擊左側(cè) Applications 窗口中應(yīng)用程序節(jié)點(diǎn),選擇“應(yīng)用程序快照”為生成一個(gè)應(yīng)用程序快照。應(yīng)用程序快照會(huì)收集某一時(shí)刻的堆轉(zhuǎn)儲(chǔ),線程轉(zhuǎn)儲(chǔ)和 Profiler 快照,同時(shí)也會(huì)捕獲 JVM 的一些基本信息。
5、轉(zhuǎn)儲(chǔ)功能
線程轉(zhuǎn)儲(chǔ)的生成與分析
VisualVM 能夠?qū)φ谶\(yùn)行的本地應(yīng)用程序生成線程轉(zhuǎn)儲(chǔ),把活動(dòng)線程的堆棧蹤跡打印出來,幫助我們有效了解線程運(yùn)行的情況,診斷死鎖、應(yīng)用程序癱瘓等問題。
當(dāng) VisualVM 統(tǒng)計(jì)完應(yīng)用程序內(nèi)線程的相關(guān)數(shù)據(jù),會(huì)把這些信息顯示新的線程轉(zhuǎn)儲(chǔ)標(biāo)簽。
VisualVM 能夠生成堆轉(zhuǎn)儲(chǔ),統(tǒng)計(jì)某一特定時(shí)刻 JVM 中的對(duì)象信息,幫助我們分析對(duì)象的引用關(guān)系、是否有內(nèi)存泄漏情況的發(fā)生等。
當(dāng) VisualVM 統(tǒng)計(jì)完堆內(nèi)對(duì)象數(shù)據(jù)后,會(huì)把堆轉(zhuǎn)儲(chǔ)信息顯示在新的堆轉(zhuǎn)儲(chǔ)標(biāo)簽內(nèi),我們可以看到摘要、類、實(shí)例數(shù)等信息以及通過 OQL 控制臺(tái)執(zhí)行查詢語句功能。
堆轉(zhuǎn)儲(chǔ)的摘要包括轉(zhuǎn)儲(chǔ)的文件大小、路徑等基本信息,運(yùn)行的系統(tǒng)環(huán)境信息,也可以顯示所有的線程信息。
從類視圖可以獲得各個(gè)類的實(shí)例數(shù)和占用堆大小數(shù),分析出內(nèi)存空間的使用情況,找出內(nèi)存的瓶頸,避免內(nèi)存的過度使用。
通過實(shí)例數(shù)視圖可以獲得每個(gè)實(shí)例內(nèi)部各成員變量的值以及該實(shí)例被引用的位置。首先需要在類視圖選擇需要查看實(shí)例的類。
此外,還能對(duì)兩個(gè)堆轉(zhuǎn)儲(chǔ)文件進(jìn)行比較。通過比較我們能夠分析出兩個(gè)時(shí)間點(diǎn)哪些對(duì)象被大量創(chuàng)建或銷毀。

載地址

  • 電腦版
VisualVM(Java 程序性能分析工具) v2.1.8官方版

您喜歡

java編程軟件推薦
java編程軟件推薦
Java因其安全、高效、跨平臺(tái)等特性目前廣泛應(yīng)用于各種平臺(tái)。所以很多人投入到Java開發(fā)的學(xué)習(xí)中,俗話說的好,工欲善其事必先利其器,學(xué)習(xí)Java程序設(shè)計(jì),需要方便易用的開發(fā)工具輔助。Java開發(fā)工具很多,而且各有優(yōu)缺點(diǎn),新手往往不知道java用什么軟件編程最好。為此小編整理了一些適合新手的java編程軟件,每種軟件都有其優(yōu)點(diǎn)和適用場(chǎng)景,開發(fā)者可以根據(jù)自己的需求和個(gè)人喜好來選擇最適合的軟件。

網(wǎng)友評(píng)論

0條評(píng)論
(您的評(píng)論需要經(jīng)過審核才能顯示)