Java千百问_08JDK详解(016)_AttachAPI是什么

点击进入_更多_Java千百问

1、AttachAPI是什么

Attach API是Sun公司提供的一套扩展API,它并不是Java的标准API。顾名思义,Attach,为JVM附加某些程序。简单来说,就是把一个程序连接到一个正在运行的JVM上,连接之后,这段程序就可以在JVM中运行。这段程序被称为JVMTI Agent程序。

我们使用它可以很方便地在运行过程中动态地设置加载代理类(JVMTI Agent),使我们能方便的监控一个JVM,运行一个外加的代理程序。

了解JVMTI Agent看这里:JVMTI是什么

2、AttachAPI提供那些接口

Attach API功能上非常简单,主要提供了如下几个功能:

  1. 获取当前所有JVM实例的描述。
  2. 为指定JVM加载Agent程序。

获取当前所有JVM实例的描述

例子:

public class TestAgent {

    public static void main(String[] args) throws AttachNotSupportedException, IOException, AgentLoadException, AgentInitializationException {
        List<VirtualMachineDescriptor> list = VirtualMachine.list();
        for (VirtualMachineDescriptor vmd : list) {
            System.out.println("pid:" + vmd.id() + ":" + vmd.displayName());
        }
    }
}

执行结果如下:

pid:8536:com.test.jvmti.TestAgent
pid:6697:

为指定JVM加载Agent程序

在《如何编写JVMTI agent程序》这篇文章中有一个完整的实例,清楚的讲解了通过AttachAPI为指定JVM加载Agent程序,具体如下:

了解JVMTI Agent程序看这里:如何编写JVMTI agent程序

你可能感兴趣的:(AttachAPI,java动态API,JVMTIagent,Attach详解,开发Attach)