JDK1.6 的 attach 功能的介绍和入门例子

1.注意这里的一个分界线就是1.5 和 1.6 之间。 attach 功能是在jdk 1.6 版本之后出现的一个java 的新功能。

所以在1.6版本之前的java虚拟机不能够被attach。所以1.5版本编译的程序我们都不能被attach. 也不能被VirtualMachine.list

请看下面源代码:

JDK1.6 的 attach 功能的介绍和入门例子_第1张图片

JDK1.6 的 attach 功能的介绍和入门例子_第2张图片

上面的这段注释说, 只能够列表出能够被attach 的java 虚拟机。

因此,导致了一个现象:

JDK1.6 的 attach 功能的介绍和入门例子_第3张图片


打印本机虚拟机的代码:

package com.agent;

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


public class AttachTest extends Thread {

    public static void main(String[] args) throws Exception {
        while (true) {
            for (VirtualMachineDescriptor vmd : VirtualMachine.list()) {
                System.out.println(vmd);
            }
            Thread.sleep(10000);
        }
    }
}

代码执行结果:

JDK1.6 的 attach 功能的介绍和入门例子_第4张图片

里面之所以会比jconsole 多一个进程号。是因为我们通过eclipse 执行了一个AttachTest这个类中的main方法。所以一个main 进程就是一个java虚拟机。(以前我一直以为一台机子上只有一个java虚拟机。)

你可能感兴趣的:(JAVA学习)