在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Java Agent的作用及原理

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

Java Agent是目前各種監測調試JVM的主要技術。Eclipse,IntelliJ,Visual VM ,JConsole 等都依賴于此技術。相信你們的Java 程序部署的時候肯定也會配置各種Java Agent相關的信息。下面給大家盤一盤Java Agent!

1 Java Agent的作用

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

我們也可以使用JavaAgent來操控字節碼可以和其他的程序進行組合。在JVM的層面監聽對象創建、垃圾回收,線程創建等

性能分析工具使用了大量Java Agent 在程序執行的時候分析JVM的一些參數指標。

2 Java Agent的原理

Agent類必須實現下面的方法,這個方法就是agent類的入口,類似于java 的main方法入口。

public static void premain(String agentArgs, Instrumentation inst)

JVM初始化之后main方法執行之前premain方法會被調用,程序中可以有多個agent。每一個agent都是按照JVM初始化的順序進行調用。如果上述 premain方法沒有找到,那么JVM會調用他的重載方法。方法如下:

public static void premain(String agentArgs)

JVM 啟動之后,可以通過attach去調用agentmain方法,許多動態的JVM參數分析都是通過這個方法來完成的。

public static void agentmain(String agentArgs, Instrumentation inst)

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

public static void agentmain(String agentArgs)

下圖為 OpenJDK11中的Agent類:

圖片

3 一個自定義Agent示例

下面我們實現一個簡單的Java Agent類來體驗一下Agent。

3.1 自定義Agent類

創建普通Maven工程并新建Agent啟動類

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

    }
}

3.2 將Agent類打成jar包

將上述自定義Java Agent 類打包到jar包中,增加Maven build 參數如下

圖片

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

圖片

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

這里我們使用java命令行啟動并使用我們自定義的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

輸出結果如下:

圖片

總結

本片簡單介紹了Java Agent類的使用,并給出了一個簡單的Agent代碼示例。其中Visual VM ,JConsole 等工具會使用JDK自帶的Agent來實現實現JVM狀態分析。同樣arthas 和skywalking也是使用的agent的技術來實現對JVM的監測分析。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • JAVA
    +關注

    關注

    20

    文章

    2983

    瀏覽量

    106587
  • 編程
    +關注

    關注

    88

    文章

    3674

    瀏覽量

    94724
  • 代碼
    +關注

    關注

    30

    文章

    4882

    瀏覽量

    70066
  • Agent
    +關注

    關注

    0

    文章

    124

    瀏覽量

    27425
  • JVM
    JVM
    +關注

    關注

    0

    文章

    159

    瀏覽量

    12480
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    Java泛型的背景和作用

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

    《AI Agent 應用與項目實戰》第1-2章閱讀心得——理解Agent框架與Coze平臺的應用

    最大作用。書中還探討了Agent間的通信協議和任務調度策略,這對解決多Agent系統中的協同問題提供了很好的參考。 第二章介紹的Coze平臺帶給我全新的技術視角。作為字節跳動打造的Agent
    發表于 02-19 16:35

    《AI Agent應用與項目實戰》閱讀體驗--跟著迪哥學Agent

    感謝電子發燒友的這次活動,讓我有幸抽中了《AI Agent應用與項目實戰》(以下簡稱《Agent》)這本書的贈送。 收到書本之后我就迫不及待地學習書本中的知識。如果說依靠各種平臺上的文章了解關于AI
    發表于 03-02 12:28

    【「零基礎開發AI Agent」閱讀體驗】+初品Agent

    期待中的《零基礎開發AI Agent——手把手教你用扣子做智能體》終于寄到了,該書由葉濤、 管鍇、張心雨完成,并由電子工業出版社出版發行。 全書分為三個部分,即入門篇、工具篇及實踐篇。由此可見這是
    發表于 04-22 11:51

    【「零基礎開發AI Agent」閱讀體驗】+ 入門篇學習

    工程、RAG技術、和AI Agent是3個重要方面。其中AI Agent作為2024年最新興的技術領域,具備很好的應用前景,本書對零基礎小白普及和應用AI Agent有著很好的指導作用
    發表于 05-02 09:26

    輕量級Agent平臺怎么測試?

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

    樹莓派如何開發Agent

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

    Java變量/標識符的作用及注意事項是什么?

    Java變量的作用/使用及注意事項Java標識符的作用/使用及注意事項
    發表于 11-04 06:29

    基于使命的Agent組織模型

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

    嵌入式輕量Agent平臺的構建研究

            根據輕量Agent 平臺特性以及運行方式,提出了軟件Agent 運行的改進方案。采用開發嵌入式系統和移動設備的JAVA 版本—J2ME,在基于
    發表于 09-11 09:15 ?13次下載

    關于Java變量的作用域分析

    目錄 1.靜態作用域與動態作用域 2.變量的作用域 3.Java 中變量的作用域 4.Java
    發表于 09-25 16:28 ?0次下載

    Java中bean的作用

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

    DongTai-agent-java洞態IAST的Java應用探針

    DongTai-agent-java.zip
    發表于 05-06 11:14 ?1次下載
    DongTai-<b class='flag-5'>agent-java</b>洞態IAST的<b class='flag-5'>Java</b>應用探針

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

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

    技術速遞 | Java Agent場景性能測試分析優化經驗分享

    作者:欒文飛 高階軟件工程師 一、背景介紹 Sermant是一個主打服務治理領域的Java Agent框架,在服務治理中難免會有針對業務流量進行解析和處理的過程,此類服務治理能力將會對微服務的服務
    的頭像 發表于 03-25 07:55 ?916次閱讀
    主站蜘蛛池模板: 中文字幕一区在线观看视频 | 国产一级特黄全黄毛片 | 亚洲qingse中文久久网 | 在线天堂中文字幕 | 四只虎免费永久观看 | 黄色网 在线播放 | 天堂在线bt | 五月婷婷激情在线 | 爽好舒服快受不了了老师 | 久久香蕉综合精品国产 | 51国产午夜精品免费视频 | 亚洲国产视频网 | 国产精品免费久久久免费 | 曰本又色又爽又黄三级视频 | 好吊色视频988gao在线观看 | 黄视频网站在线看 | 亚洲高清不卡视频 | 亚洲乱亚洲乱妇13p 亚洲免费mv | 四虎国产 | 免费抓胸吻胸激烈视频网站 | 亚洲天堂.com | 亚洲一区二区三区高清 | 成人午夜大片免费7777 | 成人a毛片视频免费看 | 国产片一级aaa毛片视频 | 免费人成网ww44kk44 | 免费看片免费播放 | 黄色网在线 | 天天干天天操天天碰 | 色妞色综合久久夜夜 | 免费观看黄色网页 | 国产精品黄页网站在线播放免费 | 日本五十交尾在线观看 | 伊人色综合久久天天爱 | 一级午夜 | 天天干天天做天天操 | 黄色视屏在线免费播放 | 西西午夜影院 | 成人免费播放视频777777 | 人人插人人费 | 久久久久久久综合狠狠综合 |