Java application 性能分析分享
性能分析的主要方式
- 監視:監視是一種用來查看應用程序運行時行爲的通常方法。一般會有多個視圖(View)分別實時地顯示 CPU 使用狀況、內存使用狀況、線程狀態以及其餘一些有用的信息,以便用戶能很快地發現問題的關鍵所在。
- 轉儲:性能分析工具從內存中得到當前狀態數據並存儲到文件用於靜態的性能分析。Java 程序是經過在啓動 Java 程序時添加適當的條件參數來觸發轉儲操做的。它包括如下三種:
- 系統轉儲:JVM 生成的本地系統的轉儲,又稱做核心轉儲。通常的,系統轉儲數據量大,須要平臺相關的工具去分析,如 Windows 上的 windbg 和 Linux 上的 gdb。
- Java 轉儲:JVM 內部生成的格式化後的數據,包括線程信息,類的加載信息以及堆的統計數據。一般也用於檢測死鎖。
- 堆轉儲:JVM 將全部對象的堆內容存儲到文件。
- 快照:應用程序啓動後,性能分析工具開始收集各類運行時數據,其中一些數據直接顯示在監視視圖中,而另外大部分數據被保存在內部,直到用戶要求獲取快照,基於這些保存的數據的統計信息才被顯示出來。快照包含了應用程序在一段時間內的執行信息,一般有 CPU 快照和內存快照兩種類型。
- CPU 快照:主要包含了應用程序中函數的調用關係及運行時間,這些信息一般能夠在 CPU 快照視圖中進行查看。
- 內存快照:主要包含了內存的分配和使用狀況、載入的全部類、存在的對象信息及對象間的引用關係等。這些信息一般能夠在內存快照視圖中進行查看。
- 性能分析:性能分析是經過收集程序運行時的執行數據來幫助開發人員定位程序須要被優化的部分,從而提升程序的運行速度或是內存使用效率,主要有如下三個方面:
- CPU 性能分析:CPU 性能分析的主要目的是統計函數的調用狀況及執行時間,或者更簡單的狀況就是統計應用程序的 CPU 使用狀況。一般有 CPU 監視和 CPU 快照兩種方式來顯示 CPU 性能分析結果。
- 內存性能分析:內存性能分析的主要目的是經過統計內存使用狀況檢測可能存在的內存泄露問題及肯定優化內存使用的方向。一般有內存監視和內存快照兩種方式來顯示內存性能分析結果。
- 線程性能分析:線程性能分析主要用於在多線程應用程序中肯定內存的問題所在。通常包括線程的狀態變化狀況,死鎖狀況和某個線程在線程生命期內狀態的分佈狀況等
工具:Java Visual VM多線程
JProfiler函數
歡迎關注本站公眾號,獲取更多信息