java 简单的代码片段,展示如何将javaagent附加到运行JVM进程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 简单的代码片段,展示如何将javaagent附加到运行JVM进程相关的知识,希望对你有一定的参考价值。

import com.sun.tools.attach.VirtualMachine;
import com.sun.tools.attach.VirtualMachineDescriptor;

public class AgentRunner {

    /*
     * This class shows how to attach hotswap-agent.jar to a running JVM process and overload classes using "extraClasspath=" property via Hotswapper plugin.
     *
     * Lets assume that:
     *  args[0] contains pid of running JVM process or a runner class name we want to attach agent to
     *  args[1] contains absolute path to agent.jar
     *  args[2] contains parameters needed to pass to agent
     */
    public static void main(String[] args) {
        if (2 > args.length) {
            System.out.println("Usage: java -cp .:$JAVA_HOME/lib/tools.jar AgentRunner JVM_PID_OR_NAME PATH_TO_JAR [PARAMS]");
        } else try {
            String pid = args[0];

            for (VirtualMachineDescriptor vmd : VirtualMachine.list()) {
                if (vmd.displayName().contains(args[1])) {
                    pid = vmd.id();
                    break;
                }
            }

            final VirtualMachine vm = VirtualMachine.attach(pid);
            vm.loadAgent(args[1], 3 > args.length || null == args[2] ? "" : args[2]);
            vm.detach();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

以上是关于java 简单的代码片段,展示如何将javaagent附加到运行JVM进程的主要内容,如果未能解决你的问题,请参考以下文章

一个最简单的javaagent demo实例

字节码javaagent 入门 案例 最简单的案例

一个最简单的javaagent demo实例

一个最简单的javaagent demo实例

JavaAgent学习小结

Java Agent如何在IDEA里调试