国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

tprofiler源代碼分析

2019-11-11 04:40:52
字體:
來源:轉載
供稿:網友

tPRofiler源代碼分析

tprofiler是taobao開源的也是國內目前為止唯一一款Profiler工具,主要用于java應用的性能分析,不僅能夠抓取Java方法的調用時間,還能抓取MySQL的執行時間, 是一款不錯的開源性能分析工具。以下對tprofiler源碼中的各包進行分析,幫助大家對tprofiler源碼有個初步的認識。

1. 最外層

Main TProfiler入口,定義了premain方法,使用instrument的agent類必需的方法Profiler:用于收集運行時應用數據,主要收集方法開始執行時的時間,方法結束時的的時間,用于方法耗時統計,這里有個硬編碼,只統計耗時超過10ms的方法Manager:管理類,內部啟動四個線程,分別用于:將分析結果寫入log文件,Socket開關,時間控制和調用棧取樣

2. analysis: 離線分析profiler的結果

主要的類ProfilerLogAnalysis,該方面的分析以main()方式啟動,適用方式如下:

ProfilerLogAnalysis <tprofiler.log path> <tmethod.log path> <topmethod.log path> <topobject.log path>

該類分析了以下文件:(以下文件名在profile.properties定義,完整路徑為${user.home}/logs/) tprofiler.log: 性能分析數據,由DataDumpThread輸出 tmethod.log: 方法相關數據,由TimeControlThread或InnerSocketThread線程調用MethodCache.flushMethodData()輸出 topmethod.log: top方法相關數據,由ProfilerLogAnalysis輸出 topobjects.log: top對象相關數據,由ProfilerLogAnalysis輸出 mysqlProfiler.log: 由DataDumpThread輸出

3. instrument包:修改字節碼

這個是字節碼注入的比較核心的包,也是唯一稍微難度的地方

ProfClassAdapter : asm類適配器,對類進行字節碼注入ProfMethodAdapter: asm方法適配器,對方法進行字節碼注入ProfTransformer:用于注入Profiler的字節碼,可注入字節碼的類分為兩類,普通類和Mysql相關類

4. config包:配置

ProfFilter: 包過濾器,過濾注入或者不注入的PackageConfigureProperties:用于加載配置文件的properties類ProfConfig:用于讀取與保存profile.properties文件

5. thread

DataDumpThread :將性能分析數據寫到log線程InnerSocketThread :控制開關的線程,用于配合TProfileClientSamplerThread :調用棧采樣線程TimeControlThread :開始時間結束時間控制線程

6. client包:客戶端

TProfileClient:TProfiler客戶端,用來遠程打開 關閉及查看狀態

代碼量統計

空行:2357 注釋行:1420 代碼行:468


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 汉沽区| 遵义市| 宣恩县| 五指山市| 无棣县| 承德市| 宣威市| 温泉县| 清河县| 临潭县| 股票| 铜川市| 喜德县| 麦盖提县| 通州区| 荆州市| 镇巴县| 宝坻区| 辽阳市| 巴南区| 鱼台县| 四平市| 绥宁县| 常德市| 洪江市| 尉氏县| 海门市| 阳朔县| 巴塘县| 海口市| 监利县| 黄浦区| 若尔盖县| 莱芜市| 宽城| 金坛市| 阿鲁科尔沁旗| 柘荣县| 万安县| 丹江口市| 修武县|