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

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

Instrumentation

2019-11-11 02:54:05
字體:
供稿:網(wǎng)友

Instrumentation的功能

java Instrumentation指的是用代理程序來監(jiān)測和協(xié)助運行在JVM上的應(yīng)用程序,并且這種代理程序是獨立于應(yīng)用程序之外的,這是Instrumentation功能的最主要特性。 Instrumentation能夠監(jiān)測和協(xié)助的功能主要包括:

獲取JVM運行時狀態(tài)在運行時動態(tài)修改類定義

在 Java SE 5+中,可以在一個普通 Java 類(具有main 函數(shù),對于Tomcat內(nèi)的應(yīng)用,Tomcat自身帶有main函數(shù))運行時,通過 -javaagent 參數(shù)指定一個特定的 jar 文件來啟動 Instrumentation 的代理程序。啟動代理程序有以下兩種方式。

PRemain方式

main方法啟動前啟動一個代理程序.語法:java -javaagent:agent_jar_path[=options] java_app_name 為了實現(xiàn)代理功能,需要:

代理類必須提供一個public static void premain(String args, Instrumentation inst)或 public static void premain(String args) 方法 舉個栗子:public class Main { public static void premain(String args, Instrumentation inst) { Manager.instance().initialization(); inst.addTransformer(new ProfTransformer());//這里的ProfTransformer主要用于修改字節(jié)碼 Manager.instance().startupThread(); }}jar包的manifest文件中包含Premain-Class屬性,并且屬性的值為代理類全路徑名 舉個栗子:Manifest-Version: 1.0Archiver-Version: Plexus ArchiverCreated-By: Apache MavenBuilt-By: manlgeBuild-Jdk: 1.7.0_25Premain-Class: com.taobao.profile.Main

agentmain方式

agentmain方式能夠在JVM啟動后動態(tài)的去修改一些類的行為,這一點可以極大地提高調(diào)試效率。 實現(xiàn)步驟:

代理類需要提供public static void agentmain(String args, Instrumentation inst)或public static void agentmain(String args)方法。如果這兩個方法同時存在,以前者優(yōu)先。在manifest中指定Agent-Class屬性,值為代理類全路徑Attach API,在運行時動態(tài)加載一個代理jar,詳細方式可以參考這里
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 冷水江市| 辽宁省| 兰坪| 新密市| 元江| 扎赉特旗| 阳原县| 剑河县| 盱眙县| 景宁| 邯郸县| 卫辉市| 桑植县| 华宁县| 南投县| 景洪市| 永德县| 清新县| 阿拉善右旗| 全椒县| 贞丰县| 庆元县| 吉木萨尔县| 新乡县| 手游| 梁山县| 大荔县| 启东市| 慈利县| 神农架林区| 梅河口市| 黄龙县| 章丘市| 新津县| 峨山| 灵璧县| 六盘水市| 饶河县| 寿阳县| 松溪县| 嘉鱼县|