
VisualVM(Java 程序性能分析工具)
詳情介紹
VisualVM是一個專門用于監(jiān)控Java的虛擬機JVM的監(jiān)控工具,大家都知道java的環(huán)境下許多東西都是命令行的形式,而這款工具能夠讓用戶獲得一個圖形界面來方便你快捷的查看多個java應用程序的相關信息。
通俗的講,VisualVM是一種集成了多種JDK命令行工具的可視化工具,能夠為我們的用戶提供強大的分析能力,而且最主要的就是這些全部免費,你可以不花費任何代價,就可以利用這款軟件管理好自己的java應用程序,當然用戶如果想要使用最新的軟件還是需要最新的java/soft/4845.html版本的。當然,VisualVM的功能還是非常強大的,一些工具能夠幫助用戶生成和分析海量數(shù)據(jù)、跟蹤內存泄露、監(jiān)控垃圾回收器、執(zhí)行內存和CPU分析等等,有需要的用戶不要錯過哦。
VisualVM(Java 程序性能分析工具)特色
1、監(jiān)視:監(jiān)視是一種用來查看應用程序運行時行為的一般方法。通常會有多個視圖(View)分別實時地顯示 CPU 使用情況、內存使用情況、線程狀態(tài)以及其他一些有用的信息,以便用戶能很快地發(fā)現(xiàn)問題的關鍵所在。
2、轉儲:性能分析工具從內存中獲得當前狀態(tài)數(shù)據(jù)并存儲到文件用于靜態(tài)的性能分析。Java 程序是通過在啟動 Java 程序時添加適當?shù)臈l件參數(shù)來觸發(fā)轉儲操作的。它包括以下三種:
3、系統(tǒng)轉儲:JVM 生成的本地系統(tǒng)的轉儲,又稱作核心轉儲。一般的,系統(tǒng)轉儲數(shù)據(jù)量大,需要平臺相關的工具去分析,如 Windows 上的 windbg 和 Linux 上的 gdb。
4、Java 轉儲:JVM 內部生成的格式化后的數(shù)據(jù),包括線程信息,類的加載信息以及堆的統(tǒng)計數(shù)據(jù)。通常也用于檢測死鎖。
5、堆轉儲:JVM 將所有對象的堆內容存儲到文件。
6、快照:應用程序啟動后,性能分析工具開始收集各種運行時數(shù)據(jù),其中一些數(shù)據(jù)直接顯示在監(jiān)視視圖中,而另外大部分數(shù)據(jù)被保存在內部,直到用戶要求獲取快照,基于這些保存的數(shù)據(jù)的統(tǒng)計信息才被顯示出來??煺瞻藨贸绦蛟谝欢螘r間內的執(zhí)行信息,通常有 CPU 快照和內存快照兩種類型。
7、CPU 快照:主要包含了應用程序中函數(shù)的調用關系及運行時間,這些信息通??梢栽?CPU 快照視圖中進行查看。
8、內存快照:主要包含了內存的分配和使用情況、載入的所有類、存在的對象信息及對象間的引用關系等。這些信息通??梢栽趦却婵煺找晥D中進行查看。
9、性能分析:性能分析是通過收集程序運行時的執(zhí)行數(shù)據(jù)來幫助開發(fā)人員定位程序需要被優(yōu)化的部分,從而提高程序的運行速度或是內存使用效率,主要有以下三個方面:
10、CPU 性能分析:CPU 性能分析的主要目的是統(tǒng)計函數(shù)的調用情況及執(zhí)行時間,或者更簡單的情況就是統(tǒng)計應用程序的 CPU 使用情況。通常有 CPU 監(jiān)視和 CPU 快照兩種方式來顯示 CPU 性能分析結果。
11、內存性能分析:內存性能分析的主要目的是通過統(tǒng)計內存使用情況檢測可能存在的內存泄露問題及確定優(yōu)化內存使用的方向。通常有內存監(jiān)視和內存快照兩種方式來顯示內存性能分析結果。
12、線程性能分析:線程性能分析主要用于在多線程應用程序中確定內存的問題所在。一般包括線程的狀態(tài)變化情況,死鎖情況和某個線程在線程生命期內狀態(tài)的分布情況等。
VisualVM功能介紹
1、內存分析
VisualVM 通過檢測 JVM 中加載的類和對象信息等幫助我們分析內存使用情況,我們可以通過 VisualVM 的監(jiān)視標簽和 Profiler 標簽對應用程序進行內存分析。
在監(jiān)視標簽內,我們可以看到實時的應用程序內存堆以及永久保留區(qū)域的使用情況。
此外,我們也可以通過 Applications 窗口右擊應用程序節(jié)點來啟用“在出現(xiàn) OOME 時生成堆 Dump”功能,當應用程序出現(xiàn) OutOfMemory 例外時,VisualVM 將自動生成一個堆轉儲。
在 Profiler 標簽,點擊“內存”按鈕將啟動一個內存分析會話,等 VisualVM 收集和統(tǒng)計完相關性能數(shù)據(jù)信息,將會顯示在性能分析結果。通過內存性能分析結果,我們可以查看哪些對象占用了較多的內存,存活的時間比較長等,以便做進一步的優(yōu)化。
此外,我們可以通過性能分析結果下方的類名過濾器對分析結果進行過濾。
2、CPU 分析
VisualVM 能夠監(jiān)控應用程序在一段時間的 CPU 的使用情況,顯示 CPU 的使用率、方法的執(zhí)行效率和頻率等相關數(shù)據(jù)幫助我們發(fā)現(xiàn)應用程序的性能瓶頸。我們可以通過 VisualVM 的監(jiān)視標簽和 Profiler 標簽對應用程序進行 CPU 性能分析。
在監(jiān)視標簽內,我們可以查看 CPU 的使用率以及垃圾回收活動對性能的影響。過高的 CPU 使用率可能是由于我們的項目中存在低效的代碼,可以通過 Profiler 標簽的 CPU 性能分析功能進行詳細的分析。如果垃圾回收活動過于頻繁,占用了較高的 CPU 資源,可能是由內存不足或者是新生代和舊生代分配不合理導致的等。
在 Profiler 標簽,點擊“CPU”按鈕啟動一個 CPU 性能分析會話 ,VisualVM 會檢測應用程序所有的被調用的方法。當進入一個方法時,線程會發(fā)出一個“method entry”的事件,當退出方法時同樣會發(fā)出一個“method exit”的事件,這些事件都包含了時間戳。然后 VisualVM 會把每個被調用方法的總的執(zhí)行時間和調用的次數(shù)按照運行時長展示出來。
此外,我們也可以通過性能分析結果下方的方法名過濾器對分析結果進行過濾。
3、線程分析
Java 語言能夠很好的實現(xiàn)多線程應用程序。當我們對一個多線程應用程序進行調試或者開發(fā)后期做性能調優(yōu)的時候,往往需要了解當前程序中所有線程的運行狀態(tài),是否有死鎖、熱鎖等情況的發(fā)生,從而分析系統(tǒng)可能存在的問題。
在 VisualVM 的監(jiān)視標簽內,我們可以查看當前應用程序中所有活動線程和守護線程的數(shù)量等實時信息。
VisualVM 的線程標簽提供了三種視圖,默認會以時間線的方式展現(xiàn)。另外兩種視圖分別是表視圖和詳細信息視圖。
時間線視圖上方的工具欄提供了縮小,放大和自適應三個按鈕,以及一個下拉框,我們可以選擇將所有線程、活動線程或者完成的線程顯示在視圖中。
4、快照功能
我們可以使用 VisualVM 的快照功能生成任意個性能分析快照并保存到本地來輔助我們進行性能分析??煺諡椴东@應用程序性能分析數(shù)據(jù)提供了一個很便捷的方式因為快照一旦生成可以在任何時候離線打開和查看,也可以相互傳閱。
VisualVM 提供了兩種類型的快照:
Profiler 快照:當有一個性能分析會話(內存或者 CPU)正在進行時,我們可以通過性能分析結果工具欄的“快照”按鈕生成 Profiler 快照捕獲當時的性能分析數(shù)據(jù)。
應用程序快照:我們可以右鍵點擊左側 Applications 窗口中應用程序節(jié)點,選擇“應用程序快照”為生成一個應用程序快照。應用程序快照會收集某一時刻的堆轉儲,線程轉儲和 Profiler 快照,同時也會捕獲 JVM 的一些基本信息。
5、轉儲功能
線程轉儲的生成與分析
VisualVM 能夠對正在運行的本地應用程序生成線程轉儲,把活動線程的堆棧蹤跡打印出來,幫助我們有效了解線程運行的情況,診斷死鎖、應用程序癱瘓等問題。
當 VisualVM 統(tǒng)計完應用程序內線程的相關數(shù)據(jù),會把這些信息顯示新的線程轉儲標簽。
VisualVM 能夠生成堆轉儲,統(tǒng)計某一特定時刻 JVM 中的對象信息,幫助我們分析對象的引用關系、是否有內存泄漏情況的發(fā)生等。
當 VisualVM 統(tǒng)計完堆內對象數(shù)據(jù)后,會把堆轉儲信息顯示在新的堆轉儲標簽內,我們可以看到摘要、類、實例數(shù)等信息以及通過 OQL 控制臺執(zhí)行查詢語句功能。
堆轉儲的摘要包括轉儲的文件大小、路徑等基本信息,運行的系統(tǒng)環(huán)境信息,也可以顯示所有的線程信息。
從類視圖可以獲得各個類的實例數(shù)和占用堆大小數(shù),分析出內存空間的使用情況,找出內存的瓶頸,避免內存的過度使用。
通過實例數(shù)視圖可以獲得每個實例內部各成員變量的值以及該實例被引用的位置。首先需要在類視圖選擇需要查看實例的類。
此外,還能對兩個堆轉儲文件進行比較。通過比較我們能夠分析出兩個時間點哪些對象被大量創(chuàng)建或銷毀。
下載地址
- 電腦版
- 本地下載通道:
- 江蘇電信下載
- 廣東電信下載
- 北京聯(lián)通下載
- 浙江電信下載
同類軟件
網(wǎng)友評論
共0條評論類似軟件
-
JDK18官方版 v18.0.2.1 編程軟件 / 152.03M
-
JAVA 8 v8.0.4610.11 編程軟件 / 33.7M
-
eclipse中文版 v4.30.0官方版 編程軟件 / 348.4M
-
-
























贛公網(wǎng)安備 36010602000087號