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

相关推荐
CN.LG19 小时前
浅谈C++之线程管理
开发语言·jvm
吾爱星辰1 天前
【Kotlin 集合概述】可变参数vararg、中缀函数infix以及解构声明(二十)
java·开发语言·jvm·kotlin
吾爱星辰1 天前
【Kotlin基于selenium实现自动化测试】初识selenium以及搭建项目基本骨架(1)
java·开发语言·jvm·selenium·kotlin
程序猿进阶1 天前
内存占用估算方法
java·jvm·面试·性能优化·职业发展·架构设计·对象池
扎克begod1 天前
JAVA并发编程系列(13)Future、FutureTask异步小王子
java·开发语言·jvm
多敲代码防脱发1 天前
Java数据结构链表(LinkedList详解)
java·开发语言·前端·jvm·数据结构·笔记·链表
迷迷的k1 天前
关于 JVM 个人 NOTE
jvm·笔记
regedit801 天前
centos7编译安装openresty+lua-resty-http+lua-resty-openssl-master
jvm·笔记
小火球2.02 天前
Thread
jvm