色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Java Agent的作用及原理

科技綠洲 ? 來源:Java技術(shù)指北 ? 作者:Java技術(shù)指北 ? 2023-10-10 15:53 ? 次閱讀

Java Agent是目前各種監(jiān)測(cè)調(diào)試JVM的主要技術(shù)。Eclipse,IntelliJ,Visual VM ,JConsole 等都依賴于此技術(shù)。相信你們的Java 程序部署的時(shí)候肯定也會(huì)配置各種Java Agent相關(guān)的信息。下面給大家盤一盤Java Agent!

1 Java Agent的作用

Java Agent是java.lang.instrument.Instrumentation API的一部分,Instrumentation 提供了修改字節(jié)碼的機(jī)制。并且可以動(dòng)態(tài)或者靜態(tài)地完成。這意味著我們可以在不接觸源程序代碼的情況下,向程序中添加一些代碼來改變程序。Java Agent有多種用途,如面向切面編程(AOP),程序分析等。AOP可以在不修改原有代碼的情況下向程序提供日志記錄或安全類似的功能。

我們也可以使用JavaAgent來操控字節(jié)碼可以和其他的程序進(jìn)行組合。在JVM的層面監(jiān)聽對(duì)象創(chuàng)建、垃圾回收,線程創(chuàng)建等

性能分析工具使用了大量Java Agent 在程序執(zhí)行的時(shí)候分析JVM的一些參數(shù)指標(biāo)。

2 Java Agent的原理

Agent類必須實(shí)現(xiàn)下面的方法,這個(gè)方法就是agent類的入口,類似于java 的main方法入口。

public static void premain(String agentArgs, Instrumentation inst)

JVM初始化之后main方法執(zhí)行之前premain方法會(huì)被調(diào)用,程序中可以有多個(gè)agent。每一個(gè)agent都是按照J(rèn)VM初始化的順序進(jìn)行調(diào)用。如果上述 premain方法沒有找到,那么JVM會(huì)調(diào)用他的重載方法。方法如下:

public static void premain(String agentArgs)

JVM 啟動(dòng)之后,可以通過attach去調(diào)用agentmain方法,許多動(dòng)態(tài)的JVM參數(shù)分析都是通過這個(gè)方法來完成的。

public static void agentmain(String agentArgs, Instrumentation inst)

同樣的如果上述agentmain方法沒有找到,那么也會(huì)執(zhí)行其重載方法的版本。

public static void agentmain(String agentArgs)

下圖為 OpenJDK11中的Agent類:

圖片

3 一個(gè)自定義Agent示例

下面我們實(shí)現(xiàn)一個(gè)簡單的Java Agent類來體驗(yàn)一下Agent。

3.1 自定義Agent類

創(chuàng)建普通Maven工程并新建Agent啟動(dòng)類

public class JavaNorthAgent {
    //JVM啟動(dòng)時(shí)的agent 方法
    public static void premain(String agentArgs, Instrumentation inst) {
        System.out.println("premain --- agentArgs:" + agentArgs + " |inst:" + inst.toString());
    }
    //  JVM運(yùn)行中的agent 方法
    public static void agentmain(String agentArgs, Instrumentation inst){
        System.out.println("agentmain --- agentArgs:" + agentArgs + " |inst:" + inst.toString());

    }
}

3.2 將Agent類打成jar包

將上述自定義Java Agent 類打包到j(luò)ar包中,增加Maven build 參數(shù)如下

圖片

執(zhí)行 mvn clean package命令打包后,可以看到taget目錄下的jar包文件如下。

圖片

3.3 使用java命令使用指定的agent

這里我們使用java命令行啟動(dòng)并使用我們自定義的Java Agent類

public class Main {
    public static void main(String[] args) {
        javaNorth("Java North Agent");
    }
    public static void javaNorth(String message){
        System.out.println(message);
    }
}

java -javaagent:E:javaNorthjavanorthagenttargetjavanorthagent-1.0-SNAPSHOT.jar="hello javanorth" com.javanorth.agent.Main

輸出結(jié)果如下:

圖片

總結(jié)

本片簡單介紹了Java Agent類的使用,并給出了一個(gè)簡單的Agent代碼示例。其中Visual VM ,JConsole 等工具會(huì)使用JDK自帶的Agent來實(shí)現(xiàn)實(shí)現(xiàn)JVM狀態(tài)分析。同樣arthas 和skywalking也是使用的agent的技術(shù)來實(shí)現(xiàn)對(duì)JVM的監(jiān)測(cè)分析。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2974

    瀏覽量

    104977
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3637

    瀏覽量

    93911
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4823

    瀏覽量

    68900
  • Agent
    +關(guān)注

    關(guān)注

    0

    文章

    106

    瀏覽量

    26778
  • JVM
    JVM
    +關(guān)注

    關(guān)注

    0

    文章

    158

    瀏覽量

    12252
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Java泛型的背景和作用

    Java泛型的背景和作用 Java泛型是Java編程語言中的一個(gè)特性,引入泛型的目的是為了增強(qiáng)代碼的類型安全性和重用性。在沒有泛型之前,Java
    的頭像 發(fā)表于 09-20 14:30 ?1124次閱讀
    <b class='flag-5'>Java</b>泛型的背景和<b class='flag-5'>作用</b>

    [10.3.4]--3.智能Agent技術(shù)-應(yīng)用與平臺(tái)

    Agent
    學(xué)習(xí)電子知識(shí)
    發(fā)布于 :2022年11月23日 16:16:57

    如何實(shí)現(xiàn)User-Agent

    `最近在玩兒Labview做瀏覽器,發(fā)現(xiàn)個(gè)問題。首先默認(rèn)瀏覽器是IE6的內(nèi)核,用倒是能用,但是現(xiàn)在很多站點(diǎn)已經(jīng)不支持了。所以會(huì)彈出對(duì)話框:所以想用User-Agent偽裝成別的瀏覽器,這個(gè)如何實(shí)現(xiàn)?試了在調(diào)用節(jié)點(diǎn)的Header里面寫User-Agent,然并卵,并沒有任何
    發(fā)表于 09-12 16:02

    輕量級(jí)Agent平臺(tái)怎么測(cè)試?

    Agent系統(tǒng)一直沒有應(yīng)用到嵌入式設(shè)備上。這是由于沒有合適的Agent平臺(tái)能夠適應(yīng)于軟、硬件資源受到限制的嵌入式系統(tǒng)。KVM (Kilo-bytes Virtual Machine)的出現(xiàn),使JAVA這種
    發(fā)表于 09-27 06:26

    樹莓派如何開發(fā)Agent

    ,配置了JADE(基于javaAgent開發(fā)框架)。各項(xiàng)測(cè)試都正常,但是使用兩臺(tái)樹莓派(都配置了JADE)進(jìn)行遠(yuǎn)程Agent之間的通信測(cè)試時(shí),一直提示通信失敗。在嘗試了各種辦法(包括更改樹莓派主機(jī)名、固定IP地址、禁用IPV6
    發(fā)表于 05-18 05:56

    Java變量/標(biāo)識(shí)符的作用及注意事項(xiàng)是什么?

    Java變量的作用/使用及注意事項(xiàng)Java標(biāo)識(shí)符的作用/使用及注意事項(xiàng)
    發(fā)表于 11-04 06:29

    基于使命的Agent組織模型

    Agent組織是一種靈活有效的多Agent系統(tǒng)求解方式。針對(duì)目前Agent組織模型主要以利己型Agent為基礎(chǔ)的現(xiàn)狀,提出適合政府及軍事等領(lǐng)域使用的基于使命的
    發(fā)表于 04-10 08:46 ?6次下載

    基于Agent的機(jī)線資源管理系統(tǒng)的設(shè)計(jì)

    Agent是一種在分布式系統(tǒng)中能自主地發(fā)揮作用的計(jì)算實(shí)體,它具有自己的知識(shí)、目標(biāo)和能力。本文提出利用多Agent系統(tǒng)設(shè)計(jì)機(jī)線資源管理系統(tǒng),將機(jī)線資源的管理內(nèi)容分解成一個(gè)個(gè)Agent,
    發(fā)表于 05-26 16:25 ?12次下載

    嵌入式輕量Agent平臺(tái)的構(gòu)建研究

            根據(jù)輕量Agent 平臺(tái)特性以及運(yùn)行方式,提出了軟件Agent 運(yùn)行的改進(jìn)方案。采用開發(fā)嵌入式系統(tǒng)和移動(dòng)設(shè)備的JAVA 版本—J2ME,在基于
    發(fā)表于 09-11 09:15 ?13次下載

    Agent技術(shù)研究與分析

    介紹了 Agent 和多Agent技術(shù)的背景和概念,比較了Agent系統(tǒng)和多Agent系統(tǒng)的體系結(jié)構(gòu),著重分析了Agent的結(jié)構(gòu),說明了多
    發(fā)表于 06-08 16:03 ?0次下載
    <b class='flag-5'>Agent</b>技術(shù)研究與分析

    關(guān)于Java變量的作用域分析

    目錄 1.靜態(tài)作用域與動(dòng)態(tài)作用域 2.變量的作用域 3.Java 中變量的作用域 4.Java
    發(fā)表于 09-25 16:28 ?0次下載

    Java中bean的作用

    java開發(fā)者都會(huì)在實(shí)體對(duì)象的屬性中加上private關(guān)鍵字,而在業(yè)務(wù)類對(duì)外發(fā)放的方法中寫上public關(guān)鍵字,這并不是習(xí)慣,而是開發(fā)者深諳其道,這就是java對(duì)象中filed的作用域。 舉個(gè)
    發(fā)表于 09-25 16:36 ?0次下載
    <b class='flag-5'>Java</b>中bean的<b class='flag-5'>作用</b>域

    DongTai-agent-java洞態(tài)IAST的Java應(yīng)用探針

    DongTai-agent-java.zip
    發(fā)表于 05-06 11:14 ?1次下載
    DongTai-<b class='flag-5'>agent-java</b>洞態(tài)IAST的<b class='flag-5'>Java</b>應(yīng)用探針

    java-hot-reload-agent java熱更新插件

    ./oschina_soft/gitee-java-hot-reload-agent.zip
    發(fā)表于 06-14 09:26 ?2次下載
    <b class='flag-5'>java-hot-reload-agent</b> <b class='flag-5'>java</b>熱更新插件

    技術(shù)速遞 | Java Agent場(chǎng)景性能測(cè)試分析優(yōu)化經(jīng)驗(yàn)分享

    作者:欒文飛 高階軟件工程師 一、背景介紹 Sermant是一個(gè)主打服務(wù)治理領(lǐng)域的Java Agent框架,在服務(wù)治理中難免會(huì)有針對(duì)業(yè)務(wù)流量進(jìn)行解析和處理的過程,此類服務(wù)治理能力將會(huì)對(duì)微服務(wù)的服務(wù)
    的頭像 發(fā)表于 03-25 07:55 ?761次閱讀
    主站蜘蛛池模板: 亚洲精品欧美精品中文字幕 | 久久国产一区二区三区 | 日本69色视频在线观看 | 儿子操妈妈 | 国产又黄又硬又粗 | 高清无码色大片中文 | 免费无码一区二区三区蜜桃大 | 亚洲欧洲日韩视频在钱 | 40岁东北老阿姨无码 | beeg日本老师 | 妈妈的朋友6未删减版完整在线 | 国产强奷糟蹋漂亮邻居在线观看 | 野花香HD免费高清版6高清版 | 国产97视频在线观看 | 少妇久久久久久被弄高潮 | 午夜向日葵视频在线观看 | 猛烈抽插H1V1| 原神美女被超污app 御姐被吸奶 | 久久热这里面只有精品 | 美女脱了内裤张开腿让男人爽 | 亚洲成熟人网站 | 国产成人综合在线观看 | 欧美国产精品久久久乱码 | 嗯啊不要老师 | XXOO麻豆国产在线九九爱 | 东北小伙FREECHINESE野外 东北嫖妓对白粗口 | 九九黄色大片 | YELLOW日本免费观看播放 | 久久亚洲AV成人无码动态图 | 3D漫画H精品啪啪无码 | 亚洲成人中文 | 日本无卡无吗在线 | 亚洲男人片片在线观看 | 超碰国产人人做人人爽 | 琪琪色在线播放 | 色一情一乱一伦一区二区三区 | G国产精品无马 | 国产精品久久久久久久久LI无码 | 51国产午夜精品免费视频 | 成电影人免费网站 | 性XXXXX搡XXXXX搡景甜 |