JVM:JavaAgent技术

文章目录

一、Java工具的介绍

在Java的世界中,除了Java编写的业务系统之外,还有一类程序也需要Java程序员参与编写,这类程序就是Java工具。常见的Java工具有以下几类:

  • 诊断类工具,如Arthas、VisualVM等。
  • 开发类工具,如Idea、Eclipse。
  • APM应用性能监测工具,如Skywalking、Zipkin等。
  • 热部署工具,如Jrebel等。

二、Java Agent技术

1、介绍

Java Agent技术是JDK提供的用来编写Java工具的技术,使用这种技术生成一种特殊的jar包,这种jar包可以让Java程序运行其中的代码。

Java Agent技术实现了让Java程序执行独立的Java Agent程序中的代码,执行方式有两种:

  • 静态加载模式。
  • 动态加载模式。

2、静态加载模式

静态加载模式可以在程序启动的一开始就执行我们需要执行的代码,适合用APM等性能监测系统从一开始就监控程序的执行性能。静态加载模式需要在Java Agent的项目中编写一个premain的方法,并打包成jar包。

接下来使用以下命令启动Java程序,此时Java虚拟机将会加载agent中的代码并执行。

premain方法会在主线程中执行。

3、动态加载模式

动态加载模式可以随时让java agent代码执行,适用于Arthas等诊断系统。动态加载模式需要再Java Agent的项目中编写一个agentmain的方法,并打包成jar包。

接下来使用以下代码就可以让java agent代码在指定的java进程中执行了。

agentmain方法会在独立线程中执行。

三、搭建java agent静态加载模式环境

1、创建maven项目

添加maven-assembly-plugin插件,此插件可以打包出java agent的jar包。

2、编写类和premain方法

premian方法中打印一行信息。

3、编写MANIFEST.MF文件

此文件主要用于描述java agent的配置属性,比如使用哪一类的premain方法。

4、使用maven-assembly-plugin进行打包

5、创建Spring Boot应用

静态加载上一步打包完的java agent

相关推荐
佛祖让我来巡山1 天前
深入理解JVM内存分配机制:大对象处理、年龄判定与空间担保
jvm·内存分配·大对象处理·空间担保·年龄判定
杨杨杨大侠1 天前
打开 JVM 黑匣子——走进 Java 字节码(一)
java·jvm·agent
J2K2 天前
JDK都25了,你还没用过ZGC?那真得补补课了
java·jvm·后端
Slaughter信仰2 天前
深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)第十章知识点问答(10题)
java·jvm·数据库
码熔burning2 天前
JVM 垃圾收集算法详解!
jvm·算法
ZzzK,3 天前
JAVA虚拟机(JVM)
java·linux·jvm
西红柿维生素3 天前
JVM相关总结
java·jvm·算法
老赵的博客3 天前
c++ unqiue指针
java·jvm·c++
mkhase3 天前
9.12-QT-基本登陆界面实现
java·jvm·qt
緈諨の約錠3 天前
JVM基础篇以及JVM内存泄漏诊断与分析
java·jvm