当前位置: 首页 > news >正文

Java Agent Premain Agentmain

概念

premain是在jvm启动的时候类加载到虚拟机之前执行的 

agentmain是可以在jvm启动后类已经加载到jvm中了,才去转换类。 这种方式会转换会有一些限制,比如不能增加或移除字段。

具体的做法,两者的实际做法是差不多的:

premain

定义个静态方法public static void premain(String args, Instrumentation inst),

在java 的启动参数中添加 -javaagent:/jar包路径[=agentArgs] 这样定义了后jvm启动时,就会去加载javaagent中指定的jar包,查找MANIFEST.MF文件中Premain-Class属性的类,执行premain方法。

Manifest-Version: 1.0
Can-Redefine-Classes: true
Premain-Class: com.premian.MyAgent
Can-Retransform-Classes: true

agentmain

定义个静态方法public static void agentmain(String agentOps, Instrumentation instrumentation),

在生成jar包中MANIFEST.MF文件中需要有Agent-Class: xxx.xxx (xxx.xxx就是上面agentmain方法所在的类名)
Can-Retransform-Classes: true

Manifest-Version: 1.0
Can-Redefine-Classes: true
Agent-Class: cn.think.in.java.clazz.loader.asm.agent.AgentMainTraceAgent 
Can-Retransform-Classes: true
使用下面代码,将agent添加到指定java进程vm = VirtualMachine.attach(pid);try {vm.loadAgent("D:\\tmp\\my-java-agent-1.0-jar-with-dependencies.jar", null);} finally {vm.detach();}


 

http://www.lryc.cn/news/291743.html

相关文章:

  • Python实现设计模式-策略模式
  • 详解SpringCloud微服务技术栈:深入ElasticSearch(4)——ES集群
  • AlmaLinux上安装Docker
  • 熟悉MATLAB 环境
  • 【数据库数据恢复】Oracle数据库ASM磁盘组数据恢复案例
  • STM32CubeMX教程31 USB_DEVICE - HID外设_模拟键盘或鼠标
  • 知道Wi-Fi名称和密码之后自动连接
  • 本地搭建Plex私人影音网站并结合内网穿透实现公网远程访问
  • 【算法】拦截导弹(线性DP)
  • 记 doris 加载压缩文件(lzo、snappy)pr
  • 【Leetcode】2670. 找出不同元素数目差数组
  • ༺༽༾ཊ—Unity之-01-工厂方法模式—ཏ༿༼༻
  • QT仪表盘小工具
  • 【2024】大三寒假再回首:缺乏自我意识是毒药,反思和回顾是解药
  • 计算机网络——网络层(3)
  • ROS2 学习笔记12:使用 colcon 构建软件包
  • 基于JAVA+SpringBoot+Vue的前后端分离的医院管理系统
  • npm淘宝镜像过期解决办法
  • Arduino 官网上下载和使用开发板
  • k8s学习-DaemonSet和Job
  • 【开源】SpringBoot框架开发海南旅游景点推荐系统
  • Windows10更新失败 错误 0x80070643、KB5034441的解决方法之二
  • SQL中LIMIT的简单用法
  • canvas自定义扩展方法:文字自动换行
  • 【2024全网最详细】Google 搜索命令终极指南
  • R-kknn包-类别插值可视化绘制
  • 探究HMAC算法:消息认证与数据完整性的完美结合
  • 10s 内得到一个干净、开箱即用的 Linux 系统
  • 轮转数组[中等]
  • 【SpringBoot系列】自动装配的魅力:Spring Boot vs 传统Spring