原創|產品更新|編輯:鄭恭琳|2020-09-27 15:27:17.283|閱讀 348 次
概述:JProfiler v 11.1 更新發布,在macOS和Linux上添加了沒有安全點偏差的異步采樣模式。它使用HotSpot JVM中的非標準AsyncGetCallTrace API在任意時間獲取調用堆棧,而不僅是在JVM認為是安全點的某些執行狀態下。對于高度多線程的CPU綁定代碼,此配置文件模式會生成更準確的CPU數據。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
JProfiler 11.1引入了以下顯著的新功能:
1、在macOS和Linux上添加了沒有安全點偏差的異步采樣模式。它使用HotSpot JVM中的非標準AsyncGetCallTrace API在任意時間獲取調用堆棧,而不僅是在JVM認為是安全點的某些執行狀態下。對于高度多線程的CPU綁定代碼,此配置文件模式會生成更準確的CPU數據。
可以通過這種方式測量的唯一線程狀態是“正在運行”。等待、阻塞和網絡I/O線程狀態不可用。與使用“可運行”線程狀態來測量何時有資格在CPU上調度線程的其他方法調用記錄類型相反,“運行”僅測量實際在CPU上調度線程的時間。獲取呼叫堆棧可能會因多種原因而失敗,這些原因在“Sampling misss”頂級節點中概述。
異步采樣使用的預分配緩沖區可能太小,無法捕獲所有調用堆棧。調用樹中也顯示了這種情況,會話設置提供了一種相對于默認大小增加緩沖區大小的方法。
請注意,Windows沒有信號處理程序,也不支持這種數據收集。
2、本機采樣已在macOS和Linux上添加。使用上述新的異步采樣模式時,可以選擇啟用本機采樣。如果啟用了本地采樣,則JProfiler解析本地庫中的符號,并將本地節點添加到調用樹中。
在本機調用樹節點中,相關的本機庫顯示在方括號中,后跟函數名稱。
在類聚合模式下,本機庫被分組在一起,而在包聚合級別中,所有本機調用都被累積。當刪除部分調用樹時,該庫也像一個類,因此,通過刪除所選節點的類(下面將介紹此版本中的新功能),整個本地庫將從調用樹中刪除。
3、JProfiler現在可以打開JDK飛行記錄器(JFR)快照。JFR快照通常記錄在生產環境中,在該環境中,性能分析代理的安裝受到限制。從此版本開始,您現在可以在分析這些快照時發揮JProfiler的全部分析功能。
視圖選擇器中的可用視圖與常規JProfiler會話中的視圖不同。JProfiler可以從JFR事件數據構造許多遙測視圖,包括堆大小、記錄的吞吐量、GC活動、類加載、線程計數和CPU負載。
在內存部分中,將顯示堆統計信息和分配記錄。如果為JFR記錄啟用了堆統計信息,則“活動對象”視圖將顯示占用大部分堆的類。第一個和最后一個堆統計信息之間的差異顯示在“差異”列中。
JFR快照中分配記錄中的數據映射到“已記錄對象”、“分配調用樹”和“分配熱點”視圖。
在“CPU”部分中,“調用樹”、“熱點”和“調用圖”視圖可用。JFR記錄根據緩沖區大小截斷跟蹤,這些跟蹤包含在單獨的頂級節點中。
JFR記錄僅以Java代碼記錄可運行的線程。由于JFR采樣的性質,無法進行時間計算,并且僅顯示事件計數。“等待”、“阻止”和“套接字與文件I/O”線程狀態顯示時間,因為它們是由定時事件組裝而成的。
JFR快照包含JProfiler用于構建線程歷史視圖的線程數據。包含的線程轉儲也顯示在JProfiler中。
JFR快照中的“等待”、“阻止”和“停車”事件顯示在“監視器和鎖”部分的“監視器歷史記錄”視圖中。這些事件是CPU視圖中“正在等待”和“已阻止”線程狀態的來源。“監視器使用情況統計信息”視圖也可用。
最后,根據JFR事件構建了許多探針:“類”、“文件”、“套接字”和“異常”。這些視圖根據是否記錄了相應的JFR事件顯示數據。在CPU視圖中,“文件”和“套接字”探針也是“套接字和文件IO”線程狀態的來源。
4、新的異常值檢測視圖顯示了方法的調用時間相對于其平均值如何變化。當將儀器用于方法調用記錄且CPU記錄處于活動狀態時,此視圖的數據始終可用。它代替了“方法統計”視圖,該視圖具有單獨的記錄,這增加了很多開銷。
離群系數量化最大調用時間偏離平均值多少。具有較高異常值系數的方法非常適合進行檢查,它具有JProfiler中出色的方法運行記錄功能,可在調用樹中分別向您顯示最慢的調用。同樣,針對異常檢測的時間測量是針對與選定方法運行記錄相同的所選線程狀態執行的。
從異常值檢測視圖中,您可以在上下文菜單中輕松選擇一種方法作為例外方法。
最大時間和調用計數的閾值限制了顯示數據的數量,可以在視圖設置中進行調整。
5、跟蹤異步調用現在適用于采樣,包括新的異步采樣模式。以前,您必須使用工具進行概要分析,才能使用“內聯異步執行”調用樹分析。必須更改分析模式才能獲得內聯的調用堆棧,這被證明是有限制的,特別是對于Kotlin協程來說,內聯特別重要。
6、現在,您可以在調用樹中顯示有助于所選調用堆棧的所有線程。當查看為所有線程累計的調用樹時,知道哪個單個線程負責增加所選節點的時間可能會很有趣。上下文菜單使您可以訪問此操作。
您可以從線程列表中直接切換到調用樹中的選定線程。
7、整個類或包的調用樹刪除已實現。您可以通過選擇一個節點并選擇“刪除選定的子樹”操作來刪除部分調用樹。
除了僅刪除所選方法之外,您現在還可以選擇刪除所選類或所選包的所有調用。
在某些情況下,您可能希望保留所選方法,而只是將其自拍時間設置為零。例如,對于Thread.run頂級方法可能就是這種情況,其中其大部分自用時間位于非概要分析類中,并且您希望概要分析代碼的百分比總計為100%。
8、遙測繪圖已得到改進。縮小遙測技術后,它們現在將顯示抖動圖的最小和最大包絡,而不是每個像素的內插平均值。同樣,所有縮放級別的峰值都會保留。
此外,您現在可以在macOS上使用CTRL +滾輪或捏合手勢來進行放大和縮小,并且在更改縮放級別時,遙測技術將保留當前光標位置。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn