如何正確測量按組件分組的 Spring Web 應用程序的啟動時間?理想情況下,我想同時獲取系統信息(例如類加載時間,按包)和組件信息(bean/應用程序加載),以及顯示每個 bean/組件/類/包的加載時間的時間線。Chrome 時間軸是我正在尋找的一個很好的例子。VisualVM/JConsole 分析器顯示方法時間并且不分組任何東西,這使得它們不適合我的想法。
1 回答

慕姐8265434
TA貢獻1813條經驗 獲得超2個贊
目前,我能找到的最佳答案是使用 Brendan Gregg 的Java Flame Graphs帖子中的信息。這并不簡單,但它是一個開始。
以下說明僅適用于 Linux:
git clone https://github.com/dcapwell/lightweight-java-profiler
構建它:
cd lightweight-java-profilermakecd ..
使用附加
-agentpath
開關啟動應用程序,然后在完成分析后退出它:java -jar -agentpath:lightweight-java-profiler/build-64/liblagent.so /path/to/your-webapp.jar
traces.txt
在此之后,您應該在當前目錄中找到一個名為的文件。下載 Brendan Gregg 的 FlameGraph 工具:
git clone http://github.com/brendangregg/FlameGraph
執行提供的腳本將跟蹤文件轉換為 SVG 文件:
cd FlameGraph./stackcollapse-ljp.awk < ../traces.txt | ./flamegraph.pl > ../traces.svg
在 Firefox 中打開 SVG 文件;X 軸是樣本數(100% 對應于總分析時間),方法調用堆疊在 Y 軸上:
添加回答
舉報
0/150
提交
取消