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

首頁 > 學院 > 開發(fā)設計 > 正文

tprofiler源代碼分析

2019-11-11 05:10:56
字體:
來源:轉載
供稿:網(wǎng)友

tPRofiler源代碼分析

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

1. 最外層

Main TProfiler入口,定義了premain方法,使用instrument的agent類必需的方法Profiler:用于收集運行時應用數(shù)據(jù),主要收集方法開始執(zhí)行時的時間,方法結束時的的時間,用于方法耗時統(tǒng)計,這里有個硬編碼,只統(tǒng)計耗時超過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: 性能分析數(shù)據(jù),由DataDumpThread輸出 tmethod.log: 方法相關數(shù)據(jù),由TimeControlThread或InnerSocketThread線程調用MethodCache.flushMethodData()輸出 topmethod.log: top方法相關數(shù)據(jù),由ProfilerLogAnalysis輸出 topobjects.log: top對象相關數(shù)據(jù),由ProfilerLogAnalysis輸出 mysqlProfiler.log: 由DataDumpThread輸出

3. instrument包:修改字節(jié)碼

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

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

4. config包:配置

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

5. thread

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

6. client包:客戶端

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

代碼量統(tǒng)計

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


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 内乡县| 开化县| 乌拉特中旗| 大足县| 临湘市| 林周县| 武定县| 金乡县| 土默特左旗| 潮州市| 夏河县| 洪洞县| 安溪县| 菏泽市| 平和县| 定州市| 教育| 哈密市| 太康县| 上林县| 勃利县| 新河县| 定南县| 白水县| 汾西县| 唐河县| 韶山市| 伊吾县| 凤冈县| 梓潼县| 元谋县| 繁昌县| 鄱阳县| 固阳县| 谷城县| 白河县| 洪泽县| 枞阳县| 敦化市| 常山县| 洪泽县|