simple profiler
1、概述
做一個無侵入性的Java性能分析工具,使用的技術有:sun attach api, java instrument api, java bytecode, asm framework
2、使用方式:
參數:
javapid - java 進程號
profile type - profile 類型,參見profile類型介紹
class name - 需要profile的類名。支持正則表達式
port (optional) - 查看結果的端口,使用http協議輸出結果
profile log location
(optional) - 如果採用detail模式進行profile,會有給予call hierarchy的日誌作爲輸出結果。此參數用於指定日誌文件路徑
profile depth - 使用detail模式時,不可能對所有的調用進行profile,不然會有很大的性能開銷。因此要指定一個深度,即從開始profile的類開始,根據callstack,最多profile的層數
3、profile type介紹
3.1、simple
簡單模式,只profile匹配的類的所有public方法的執行時間、次數、總耗時、大於200ms的操作次數、大於200ms的操作耗時
給予以上數據可以可以做簡單的分析
3.2、flow
流模式,定期將統計數據輸出到文件並且清零統計結果,其他細節與simple模式相同。一般用來繪製性能統計圖表
3.3、detail
細節模式,細節模式會根據profile depth統計每層方法的調用時間並定期append到日誌文件中以供後續的分析
simple模式主要作爲performance monitor進行報警和簡單的彙總分析。
flow模式可用來使用給予ttdtool的工具進行彙總畫圖,進行進一步的性能分析,一般用來壓測時提高壓力是觀測性能變化
detail模式主要用在壓測環境定位性能熱點。推薦的流程是使用simple模式簡單定位到hotspot後在壓測環境中使用detail模式進一步排查性能瓶頸
圖片: