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

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

tprofiler源代碼分析

2019-11-11 05:14:35
字體:
來源:轉載
供稿:網友

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 吴堡县| 育儿| 蒙城县| 沐川县| 牟定县| 中西区| 五台县| 东乌珠穆沁旗| 黔西县| 蒙阴县| 炉霍县| 四平市| 邹平县| 临猗县| 嘉祥县| 阳山县| 乐山市| 潮安县| 海晏县| 汝南县| 宁武县| 吉林市| 鹤壁市| 怀宁县| 措勤县| 大方县| 永川市| 仁怀市| 屏东县| 棋牌| 奎屯市| 湾仔区| 襄垣县| 砚山县| 浪卡子县| 中江县| 华池县| 凉城县| 滁州市| 平定县| 鹤岗市|