code: public static VirtualMachine attach(String id) throws AttachNotSupportedException, IOException
     {
        List<AttachProvider> providers = AttachProvider.providers();
        AttachNotSupportedException lastExc = null;
  
        for (AttachProvider provider : providers) {
           try {
              return provider.attachVirtualMachine(id);
           }
           catch (AttachNotSupportedException x) {
              lastExc = x;
           }
        }
  
        throw lastExc;
     }
docs: <p>
  Attaches to a Java virtual machine.
  </p>
  <p>
  This method obtains the list of attach providers by invoking the
  {@link com.sun.tools.attach.spi.AttachProvider#providers() AttachProvider.providers()} method.
  It then iterates overs the list and invokes each provider's {@link
  com.sun.tools.attach.spi.AttachProvider#attachVirtualMachine(java.lang.String)
  attachVirtualMachine} method in turn. If a provider successfully
  attaches then the iteration terminates, and the VirtualMachine created
  by the provider that successfully attached is returned by this method.
  If the {@code attachVirtualMachine} method of all providers throws
  {@link com.sun.tools.attach.AttachNotSupportedException AttachNotSupportedException}
  then this method also throws {@code AttachNotSupportedException}.
  This means that {@code AttachNotSupportedException} is thrown when
  the identifier provided to this method is invalid, or the identifier
  corresponds to a Java virtual machine that does not exist, or none
  of the providers can attach to it. This exception is also thrown if
  {@link com.sun.tools.attach.spi.AttachProvider#providers()
  AttachProvider.providers()} returns an empty list.
  </p>
  
  @param id The abstract identifier that identifies the Java virtual machine.
  @return A VirtualMachine representing the target VM.
  @throws SecurityException           If a security manager has been installed and it denies
  {@link com.sun.tools.attach.AttachPermission AttachPermission}
  <tt>("attachVirtualMachine")</tt>, or another permission
  required by the implementation.
  @throws IOException                 If an I/O error occurs