雖然市場上的 Java Profiler 工具備很多,可是基本功能大多類似,本節首先對這些基本功能進行介紹。html
遙測(Telemetry):遙測是一種用來查看應用程序運行行爲的最簡單的方法。一般會有多個視圖(View)分別實時地顯示 CPU 使用狀況、內存使用狀況、線程狀態以及其餘一些有用的信息,以便用戶能很快地發現問題的關鍵所在。瀏覽器
CPU Telemetry 視圖通常用於顯示整個應用程序的 CPU 使用狀況,有些工具還能顯示應用程序中每一個線程的 CPU 使用狀況。多線程
Memory Telemetry 視圖通常用於顯示堆內存和非堆內存的分配和使用狀況。eclipse
Garbage Collection Telemetry 視圖顯示了 JVM 中垃圾收集器的詳細信息。函數
Threads Telemetry 視圖通常用於顯示當前運行線程的個數、守護進程的個數等信息。工具
Classes Telemetry 視圖通常用於顯示已經載入和尚未載入的類的數量。性能
快照(snapshot):應用程序啓動後,profiler 工具開始收集各類執行數據,其中一些數據直接顯示在遙測視圖中,而另外大部分數據被保存在內部,直到用戶要求獲取快照,基於這些保存的數據的統計信息才被 顯示出來。快照包含了應用程序在一段時間內的執行信息,一般有兩種類型的快照:CPU 快照和內存快照。測試
CPU 快照主要包含了應用程序中函數的調用關係及運行時間,這些信息一般能夠在 CPU 快照視圖中進行查看。優化
內存快照則主要包含了內存的分配和使用狀況、載入的全部類、存在的對象信息及對象間的引用關係。這些信息一般能夠在內存快照視圖中進行查看。ui
CPU分析:CPU Profiling 的主要目的是統計函數的調用狀況及執行時間,或者更簡單的狀況就是統計應用程序的 CPU 使用狀況。一般有兩種方式來顯示 CPU Profiling 結果:CPU 遙測和 CPU 快照。
內存分析:內存 Profiling 的主要目的是經過統計內存使用狀況檢測可能存在的內存泄露問題及肯定優化內存使用的方向。一般有兩種方式來顯示內存 Profiling 結果:內存遙測和內存快照
線程分析:線程 Profiling 主要用於在多線程應用程序中肯定內存的問題所在。
Profiling 的啓動設置:相似於 eclipse 中 Run 和 Debug 的啓動設置,進行 Profiling 以前也須要進行啓動設置,包括:profiling 的模式 (CPU profiling 或內存 profiling),信息獲取類型(遙測 , 抽樣統計或者 BCI ) 等等。
Profiler Preference 設置:主要用於 Profiler 過濾器(選擇須要關注的包、類)、取樣間隔時間的設置等。
Java剖析工具介紹
接下來,咱們一塊兒來認識幾款經常使用的Java性能分析工具。
JProfiler--惟一一款獲過獎的Java剖析器,被譽爲"最好的Java剖析/測試工具"
JProfiler是惟一一款獲獎的Java剖析器。JProfiler直觀的用戶界面可以幫助你解決性能瓶頸,指明你的內存漏洞並解決線程問題。
JProfiler直覺式的GUI讓你能夠找到性能瓶頸、抓出內存漏失(memory leaks)、並解決執行緒的問題。它讓你得以對heap walker做資源回收器的root analysis,能夠輕易找出內存漏失;heap快照(snapshot)模式讓未被參照(reference)的對象、稍微被參照的對象、或在終結(finalization)隊列的對象都會被移除;整合精靈以便剖析瀏覽器的Java外掛功能。
YourKit Java Profiler--業界領先的 Java 剖析工具
CPU 和內存的剖析從來是很困難的,YourKit 創造出了革命性的剖析工具,應用在研發和生產階段,爲專業的 Java 開發者帶來了無比的好處。
YourKit Java Profiler 使 CPU 和內存相關的性能的一系列問題更加容易,它具備自動檢測漏洞、分析內存狀態的強有力的工具、對象瀏覽器、做爲 JUnit 測試過程一部分對內存進行全面測試等功能,並可與Eclipse、JBuilder、IntelliJ IDEA、NetBeans 和 JDeveloper IDEs 進行集成。
總的來說,YourKit Java Profiler 是一個目前很受歡迎的 Java Profiler(Java調優器),能夠用來分析和監控你的應用程序的性能,從而進行更好地調優。