VisualVM中文版是一款提供了多種jdk命令行的可視化工具,我們可以使用VisualVM來對Java應用程序進行測試和優化,并且這款軟件還能夠為用戶提供Java應用程序的分析數據,功能非常強大。
一、性能分析的主要方式
1.監視:監視是一種用來查看應用程序運行時行為的一般方法。通常會有多個視圖(View)分別實時地顯示 CPU 使用情況、內存使用情況、線程狀態以及其他一些有用的信息,以便用戶能很快地發現問題的關鍵所在。
2.轉儲:性能分析工具從內存中獲得當前狀態數據并存儲到文件用于靜態的性能分析。Java 程序是通過在啟動 Java 程序時添加適當的條件參數來觸發轉儲操作的。它包括以下三種:
系統轉儲:JVM 生成的本地系統的轉儲,又稱作核心轉儲。一般的,系統轉儲數據量大,需要平臺相關的工具去分析,如 Windows 上的 windbg 和 Linux 上的 gdb.
Java 轉儲:JVM 內部生成的格式化后的數據,包括線程信息,類的加載信息以及堆的統計數據。通常也用于檢測死鎖。
堆轉儲:JVM 將所有對象的堆內容存儲到文件。
二、快照:
應用程序啟動后,性能分析工具開始收集各種運行時數據,其中一些數據直接顯示在監視視圖中,而另外大部分數據被保存在內部,直到用戶要求獲取快照,基于這些保存的數據的統計信息才被顯示出來。快照包含了應用程序在一段時間內的執行信息,通常有 CPU 快照和內存快照兩種類型。
CPU 快照:主要包含了應用程序中函數的調用關系及運行時間,這些信息通常可以在 CPU 快照視圖中進行查看。
內存快照:主要包含了內存的分配和使用情況、載入的所有類、存在的對象信息及對象間的引用關系等。這些信息通常可以在內存快照視圖中進行查看。
三、性能分析:
性能分析是通過收集程序運行時的執行數據來幫助開發人員定位程序需要被優化的部分,從而提高程序的運行速度或是內存使用效率,主要有以下三個方面:
CPU 性能分析:CPU 性能分析的主要目的是統計函數的調用情況及執行時間,或者更簡單的情況就是統計應用程序的 CPU 使用情況。通常有 CPU 監視和 CPU 快照兩種方式來顯示 CPU 性能分析結果。
內存性能分析:內存性能分析的主要目的是通過統計內存使用情況檢測可能存在的內存泄露問題及確定優化內存使用的方向。通常有內存監視和內存快照兩種方式來顯示內存性能分析結果。
線程性能分析:線程性能分析主要用于在多線程應用程序中確定內存的問題所在。一般包括線程的狀態變化情況,死鎖情況和某個線程在線程生命期內狀態的分布情況等